<?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>222518</bug_id>
          
          <creation_ts>2021-02-27 14:15:28 -0800</creation_ts>
          <short_desc>Reduce compile time and binary size cost of enabling proper CSSStyleDeclaration property access behavior</short_desc>
          <delta_ts>2021-04-11 10:06:58 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>223542</dependson>
    
    <dependson>223613</dependson>
          <blocked>217623</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gsnedders</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1734230</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:15:28 -0800</bug_when>
    <thetext>Once the change for https://bugs.webkit.org/show_bug.cgi?id=222517 is landed in it&apos;s disabled form, we need to work to remove the compile time and binary size regression that would come with enabling it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734232</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:38:55 -0800</bug_when>
    <thetext>A very simple idea, but with a runtime cost (though unlikely a runtime regression from the legacy code currently in the build, we should test) would be to replace all the getter / setters implementations with a single pair that re-lookup the name. Unfortunately, it seems only getters are passed their name in the callback, so at best (without making changes to JSC) we only be able to replace half the functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734235</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 14:51:45 -0800</bug_when>
    <thetext>An alternative is that we could try to make the namedGetter/nameSetter approach work for this case by better emulating what a real property get/set would do for these properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734236</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-27 15:05:54 -0800</bug_when>
    <thetext>If we don&apos;t go the &quot;make it work like named getter/setter in getPropertySlot/putPropertySlot&quot; route, I think the ideal would be a single function for all the gets, a single function for all the sets, and somehow encoding the CSSPropertyID in the static HashTableValues and passing that value to the shared functions. Been a long while since I looked at that part of JSC, so not sure how feasible that would be.

I&apos;m a little confused about what role the static HashTables play these days. It seems like we mostly just use a const array of HashTableValues and call reifyStaticProperty on each one as soon as we create the prototype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734834</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-03-02 07:17:13 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #1)
&gt; A very simple idea, but with a runtime cost (though unlikely a runtime
&gt; regression from the legacy code currently in the build, we should test)
&gt; would be to replace all the getter / setters implementations with a single
&gt; pair that re-lookup the name. Unfortunately, it seems only getters are
&gt; passed their name in the callback, so at best (without making changes to
&gt; JSC) we only be able to replace half the functions.

I&apos;d be curious about why JSC has that asymmetry? At the spec level, neither getters nor setters are passed their names, so presumably there&apos;s some reason for this in JSC?

Also: how big is the binary size regression at this point? Is it just the generated getter/setter functions that dominate the regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735345</commentid>
    <comment_count>5</comment_count>
      <attachid>422110</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-03 10:25:54 -0800</bug_when>
    <thetext>Created attachment 422110
JSCSSStyleDeclaration.cpp (if you disable the legacy flag)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736845</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-06 14:16:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/75136887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739973</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-16 09:31:36 -0700</bug_when>
    <thetext>(In reply to Sam Sneddon [:gsnedders] from comment #4)
&gt; (In reply to Sam Weinig from comment #1)
&gt; &gt; A very simple idea, but with a runtime cost (though unlikely a runtime
&gt; &gt; regression from the legacy code currently in the build, we should test)
&gt; &gt; would be to replace all the getter / setters implementations with a single
&gt; &gt; pair that re-lookup the name. Unfortunately, it seems only getters are
&gt; &gt; passed their name in the callback, so at best (without making changes to
&gt; &gt; JSC) we only be able to replace half the functions.
&gt; 
&gt; I&apos;d be curious about why JSC has that asymmetry? At the spec level, neither
&gt; getters nor setters are passed their names, so presumably there&apos;s some
&gt; reason for this in JSC?

I kind of doubt there is a good reason, probably just driven by needs since this is all internals stuff.

&gt; 
&gt; Also: how big is the binary size regression at this point? Is it just the
&gt; generated getter/setter functions that dominate the regression?

Not sure at this point. It would be good to measure.


I have two ideas about to proceed here:

1) Add a PropertyName parameter to the custom setters, and implement a single set of getter/setters based on the property name parameter.

2) Add a mechanism to smuggle a parameter to the custom getter/setters stored that we store in the DOMAttributeGetterSetter at re-ification time during the prototype&apos;s creation. We could avoid making DOMAttributeGetterSetter bigger by utilizing the DOMAttributeAnnotation&apos;s domJIT pointer, which is always null in this case (and in most cases).


After sleeping on it, I&apos;m somewhat leaning towards doing #1 first, just to see what if there is performance cost and if it fixes the compile time regression, as either solution is going to grow the number of parameters passed to custom setters by 1, and that scares me a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741215</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-18 09:08:16 -0700</bug_when>
    <thetext>I prototyped / implemented adding PropertyName to custom setters in https://bugs.webkit.org/show_bug.cgi?id=223413.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742580</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-22 17:06:39 -0700</bug_when>
    <thetext>Now that setters have a property name, the next step is allowing multiple attributes to use the same function pointers for the getter/setter implementation. To do that, we need to fix bug 223542.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742581</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-22 17:07:01 -0700</bug_when>
    <thetext>Or rather, we need to fix bug 223613.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746757</commentid>
    <comment_count>11</comment_count>
      <attachid>425080</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-02 21:48:21 -0700</bug_when>
    <thetext>Created attachment 425080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746802</commentid>
    <comment_count>12</comment_count>
      <attachid>425105</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-03 12:06:35 -0700</bug_when>
    <thetext>Created attachment 425105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746810</commentid>
    <comment_count>13</comment_count>
      <attachid>425107</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-03 12:20:25 -0700</bug_when>
    <thetext>Created attachment 425107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746811</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-03 12:37:16 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; Created attachment 425107 [details]
&gt; Patch

Blerg, looks like something is broken (or maybe has never worked) in the CMake builds that is causing JSCSSStyleDeclaration.cpp not to regenerate with the change in PlatformEnable.h.  I&apos;ll make an aggressive change in CSSStyleDeclaration.idl to try to force it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746812</commentid>
    <comment_count>15</comment_count>
      <attachid>425108</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-03 12:39:00 -0700</bug_when>
    <thetext>Created attachment 425108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746873</commentid>
    <comment_count>16</comment_count>
      <attachid>425108</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-04 14:57:25 -0700</bug_when>
    <thetext>Comment on attachment 425108
Patch

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

r=me assuming tests pass (seeing EWS api-gtk failing right now?), there are not other scaling issues other than compile time and binary size, and this does resolve both of those issues as claimed

&gt; Source/WebCore/bindings/js/JSDOMAttribute.h:61
&gt; +    static bool setPassingPropertyName(JSC::JSGlobalObject&amp; lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::EncodedJSValue encodedValue, JSC::PropertyName attributeName)

Given overloading, can’t this be named set? Or do template arguments not do the overloading thing?

&gt; LayoutTests/ChangeLog:14
&gt; +        Remove tests for iteration order, which is not standardized, and not consistent among
&gt; +        browsers.

But stability still seems desirable, so I’d kind of still wish for a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746968</commentid>
    <comment_count>17</comment_count>
      <attachid>425158</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-05 09:31:42 -0700</bug_when>
    <thetext>Created attachment 425158
Test overloading of non-type template parameters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746975</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-05 09:39:30 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 425108 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425108&amp;action=review
&gt; 
&gt; r=me assuming tests pass (seeing EWS api-gtk failing right now?), there are
&gt; not other scaling issues other than compile time and binary size, and this
&gt; does resolve both of those issues as claimed
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMAttribute.h:61
&gt; &gt; +    static bool setPassingPropertyName(JSC::JSGlobalObject&amp; lexicalGlobalObject, JSC::EncodedJSValue thisValue, JSC::EncodedJSValue encodedValue, JSC::PropertyName attributeName)
&gt; 
&gt; Given overloading, can’t this be named set? Or do template arguments not do
&gt; the overloading thing?

I didn&apos;t think you could overload using only non-type template parameters, but it seems you totally can. Will fix! (I uploaded my test for this since I thought it was interesting enough).

&gt; 
&gt; &gt; LayoutTests/ChangeLog:14
&gt; &gt; +        Remove tests for iteration order, which is not standardized, and not consistent among
&gt; &gt; +        browsers.
&gt; 
&gt; But stability still seems desirable, so I’d kind of still wish for a test.

Yeah, I agree. Will make it a test that ensure the order by checking that we maintain the following invariants when iterating:

- 4 groupings
  - 1st grouping, camel case, alphabetical, includes properties with &quot;Webkit&quot; and &quot;Epub&quot; prefix with initial uppercase letter, no dashes anywhere in the name
  - 2nd grouping, webkit case, alphabetical, all properties prefixed with &quot;webkit&quot; with initial lowercase letter.
  - 3rd grouping, dashed case, alphabetical, all properties have a dash in them.
  - 4th grouping, epub case, alphabetical, all properties prefixed with &quot;epub&quot; with initial lowercase letter


Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747057</commentid>
    <comment_count>19</comment_count>
      <attachid>425187</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-05 12:27:48 -0700</bug_when>
    <thetext>Created attachment 425187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747444</commentid>
    <comment_count>20</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-04-06 08:35:07 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #18)
&gt; (In reply to Darin Adler from comment #16)
&gt; &gt; &gt; LayoutTests/ChangeLog:14
&gt; &gt; &gt; +        Remove tests for iteration order, which is not standardized, and not consistent among
&gt; &gt; &gt; +        browsers.
&gt; &gt; 
&gt; &gt; But stability still seems desirable, so I’d kind of still wish for a test.
&gt; 
&gt; Yeah, I agree. Will make it a test that ensure the order by checking that we
&gt; maintain the following invariants when iterating:
&gt; 
&gt; - 4 groupings
&gt;   - 1st grouping, camel case, alphabetical, includes properties with
&gt; &quot;Webkit&quot; and &quot;Epub&quot; prefix with initial uppercase letter, no dashes anywhere
&gt; in the name
&gt;   - 2nd grouping, webkit case, alphabetical, all properties prefixed with
&gt; &quot;webkit&quot; with initial lowercase letter.
&gt;   - 3rd grouping, dashed case, alphabetical, all properties have a dash in
&gt; them.
&gt;   - 4th grouping, epub case, alphabetical, all properties prefixed with
&gt; &quot;epub&quot; with initial lowercase letter

Looking quickly, it seems that Firefox just iterates in the order they appear in the WebIDL file, which appears to be not really that well-defined (filesystem enumeration order defined!), but groups longhands, shorthands, and aliases together.

Not sure if I have any strong preference; I wonder if we could just get away with a single alphabetical ordering?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749005</commentid>
    <comment_count>21</comment_count>
      <attachid>425687</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-10 10:20:14 -0700</bug_when>
    <thetext>Created attachment 425687
Test Case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749058</commentid>
    <comment_count>22</comment_count>
      <attachid>425697</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-10 19:59:42 -0700</bug_when>
    <thetext>Created attachment 425697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749091</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-11 07:57:53 -0700</bug_when>
    <thetext>Now I feel bad suggesting you do the overloading, because it looks like it works fine on GCC and clang, but not the Microsoft compiler!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749093</commentid>
    <comment_count>24</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-11 08:28:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #23)
&gt; Now I feel bad suggesting you do the overloading, because it looks like it
&gt; works fine on GCC and clang, but not the Microsoft compiler!

Heh. But we both learned things! So win win!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749099</commentid>
    <comment_count>25</comment_count>
      <attachid>425709</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-11 08:57:14 -0700</bug_when>
    <thetext>Created attachment 425709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749107</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-11 10:06:55 -0700</bug_when>
    <thetext>Committed r275808 (236379@main): &lt;https://commits.webkit.org/236379@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425709.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>422110</attachid>
            <date>2021-03-03 10:25:54 -0800</date>
            <delta_ts>2021-03-03 10:25:54 -0800</delta_ts>
            <desc>JSCSSStyleDeclaration.cpp (if you disable the legacy flag)</desc>
            <filename>JSCSSStyleDeclaration.cpp</filename>
            <type>text/x-csrc</type>
            <size>3182844</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">LyoKICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCgogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoK
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgoqLwoKI2luY2x1ZGUgImNvbmZpZy5oIgojaW5jbHVkZSAiSlNDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCgojaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgojaW5jbHVkZSAi
RE9NSXNvU3Vic3BhY2VzLmgiCiNpbmNsdWRlICJKU0NTU1J1bGUuaCIKI2luY2x1ZGUgIkpTRE9N
QXR0cmlidXRlLmgiCiNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiNpbmNsdWRlICJKU0RPTUNvbnZlcnRCb29sZWFu
LmgiCiNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKI2luY2x1ZGUgIkpTRE9NQ29u
dmVydE51bGxhYmxlLmgiCiNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCiNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCiNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgiCiNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgojaW5jbHVkZSAiSlNET01PcGVyYXRp
b24uaCIKI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiNpbmNsdWRlICJKU0RlcHJlY2F0
ZWRDU1NPTVZhbHVlLmgiCiNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJh
eVByb3RvdHlwZS5oPgojaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgojaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CiNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhl
YXBDZWxsVHlwZS5oPgojaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUHJvcGVydHlOYW1lQXJyYXku
aD4KI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CiNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CiNpbmNsdWRlIDx3dGYvVVJM
Lmg+CgoKbmFtZXNwYWNlIFdlYkNvcmUgewp1c2luZyBuYW1lc3BhY2UgSlNDOwoKLy8gRnVuY3Rp
b25zCgpzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRp
b25Qcm90b3R5cGVGdW5jdGlvbl9pdGVtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJ
T04oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlWYWx1
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
blByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5UHJpb3JpdHkpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9z
ZXRQcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92ZVByb3BlcnR5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rp
b25fZ2V0UHJvcGVydHlTaG9ydGhhbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9pc1Byb3BlcnR5SW1wbGlj
aXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRp
b25Qcm90b3R5cGVGdW5jdGlvbl9nZXRQcm9wZXJ0eUNTU1ZhbHVlKTsKCi8vIEF0dHJpYnV0ZXMK
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbkNv
bnN0cnVjdG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Nzc1RleHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZW5ndGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFyZW50UnVsZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jc3NGbG9hdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9BcHBsZUNvbG9yRmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlQ29sb3JGaWx0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlC
dXR0b25TdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlwZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9B
cHBsZVBheUJ1dHRvblR5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YkNhcHRpb25TaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVucyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlw
aGVucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRDb21iaW5lKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRFbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRFbXBo
YXNpc0NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzU3R5bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YlRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dE9yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0VHJhbnNm
b3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX0VwdWJUZXh0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YldvcmRCcmVhayk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9F
cHViV3JpdGluZ01vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YldyaXRpbmdNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0ludGVybmFsVGV4dEF1dG9zaXppbmdT
dGF0dXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnbkNvbnRlbnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0QWxpZ25Db250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduSXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVt
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBbGlnblNlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25TZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRB
bHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0QW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EZWxh
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRBbmltYXRpb25EZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EaXJlY3Rpb24pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uRGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFu
aW1hdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlv
bkZpbGxNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbk5hbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uTmFt
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBbmltYXRpb25QbGF5U3RhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFwcGVhcmFuY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFyYW5jZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZHJvcEZp
bHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCYWNrZHJvcEZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRDbGlwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJh
Y2tncm91bmRDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRDb21wb3NpdGUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3Vu
ZENvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kT3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRPcmln
aW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0QmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9y
ZGVyQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJBZnRlckNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9y
ZGVyQWZ0ZXJTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlcldpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVy
V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVDb2xvcik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZv
cmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0
aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRD
b2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJGaXQpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyRml0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
cmRlckhvcml6b250YWxTcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckltYWdlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlcklt
YWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlclJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJSYWRpdXMpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
U3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRDb2xvcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJTdGFydENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0U3R5bGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
U3RhcnRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BMZWZ0UmFkaXVz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94QWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RGVjb3JhdGlvbkJy
ZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJveERlY29yYXRpb25CcmVhayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hEaXJlY3Rpb24pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94RGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hG
bGV4R3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm94RmxleEdyb3VwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveExpbmVzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eExpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmRpbmFsR3JvdXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94T3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yaWVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hQYWNrKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eFBhY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94UmVmbGVjdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hSZWZsZWN0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNoYWRv
dyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3hTaGFkb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2l6aW5nKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNpemluZyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRDbGlwUGF0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDbGlwUGF0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5BeGlzKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtbkF4aXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQnJlYWtBZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0Fm
dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtbkJyZWFrQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrQmVmb3JlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENv
bHVtbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkZpbGwpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Q29sdW1uRmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5HYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uR2FwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVt
blByb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblByb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Q29sdW1uUnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlQ29sb3IpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1u
UnVsZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlU3R5bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Q29sdW1uUnVsZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVXaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5TcGFuKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtblNwYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uV2lkdGgpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29s
dW1uV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5zKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEN1cnNvclZpc2li
aWxpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q3Vyc29yVmlzaWJpbGl0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGaWx0ZXIpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rmls
dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4QmFzaXMpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rmxl
eEJhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEZsZXhEaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleERpcmVjdGlvbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRG
bGV4Rmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRGbGV4Rmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R3Jvdyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R3Jv
dyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRGbGV4U2hyaW5rKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhTaHJpbmspOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0RmxleFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmcpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Rm9udFNtb290aGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250U21vb3RoaW5nKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUNo
YXJhY3Rlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRB
ZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVm
b3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0TGlu
ZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5
cGhlbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0SW5pdGlhbExldHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRJbml0aWFsTGV0dGVyKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1
c3RpZnlDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1c3RpZnlDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1c3RpZnlJdGVtcyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRKdXN0aWZ5SXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVBbGlnbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQm94Q29udGFpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQm94Q29udGFpbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQnJl
YWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TGluZUJyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVDbGFtcCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQ2xhbXAp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TGluZUdyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZVNuYXApOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TGluZVNuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TG9jYWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvY2FsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMb2dpY2FsSGVpZ2h0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2lj
YWxXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJn
aW5BZnRlckNvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2lu
QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXJnaW5Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5FbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luRW5kKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hcmdpblN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblRvcENvbGxhcHNl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hcmdpblRvcENvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2spOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFzayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrQm94SW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91
dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTbGljZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXNrQm94SW1hZ2VTbGljZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWFza0JveEltYWdlU291cmNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tC
b3hJbWFnZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tD
b21wb3NpdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza0NvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrSW1hZ2UpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWFza0ltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hc2tPcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza09yaWdpbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
UG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza1Bvc2l0aW9uWCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25ZKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlv
blkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFza1JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUmVwZWF0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tTaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTb3VyY2VUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTb3VyY2VU
eXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1heExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbEhlaWdodCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXhMb2dpY2FsV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2lj
YWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNaW5Mb2dpY2FsV2lkdGgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWluTG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE5ic3BNb2RlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE5ic3BNb2Rl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE9wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0T3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRl
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRQYWRkaW5nQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0FmdGVyKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdC
ZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0UGFkZGluZ0JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nRW5kKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBh
ZGRpbmdFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0UGFkZGluZ1N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFydCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
ZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UHJpbnRDb2xvckFkanVzdCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQcmludENv
bG9yQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ1
YnlQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRSdWJ5UG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVJbWFnZVRocmVzaG9s
ZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRTaGFwZUltYWdlVGhyZXNob2xkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlTWFyZ2luKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFNoYXBlTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlT3V0c2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU91dHNpZGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb24p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VGV4dERlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Db2xvcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0RGVjb3JhdGlvbkNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uTGluZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbkxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Ta2lwKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRE
ZWNvcmF0aW9uU2tpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNv
cmF0aW9uU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNp
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0RW1waGFzaXNQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RmlsbENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dE9yaWVudGF0aW9uKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U2VjdXJpdHkpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNl
Y3VyaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFRleHRTaXplQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTaXplQWRqdXN0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFRleHRTdHJva2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tlQ29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dFN0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
U3Ryb2tlV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRVbmRl
cmxpbmVQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Wm9vbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Wm9vbSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFu
c2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
cmFuc2Zvcm1PcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1P
cmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2Zvcm1PcmlnaW5aKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblopOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJh
bnNmb3JtU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EZWxheSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9u
RGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EdXJhdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUcmFuc2l0aW9uUHJvcGVydHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblByb3BlcnR5KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uVGltaW5nRnVu
Y3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VXNlckRyYWcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlckRyYWcpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlck1vZGlmeSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRVc2VyTW9kaWZ5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJTZWxlY3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlclNlbGVjdCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRXcml0aW5nTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRXcml0aW5nTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkNvbnRlbnQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxp
Z25Db250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FsaWduSXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnblNlbGYpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25TZWxm
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWdubWVudEJhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudEJhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGwpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWx0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRlbGF5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRl
bGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2FuaW1hdGlvbkRpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EaXJlY3Rpb24pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRHVy
YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYW5pbWF0aW9uRHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRmlsbE1vZGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9u
RmlsbE1vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uTmFtZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25OYW1lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0ZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bmltYXRpb25QbGF5U3RhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYXNwZWN0UmF0aW8pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYXNwZWN0UmF0aW8pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRCbGVuZE1vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEJsZW5kTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
YWNrZ3JvdW5kQ2xpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kSW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZE9yaWdpbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5k
T3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3Vu
ZFBvc2l0aW9uWCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblkpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YmFja2dyb3VuZFBvc2l0aW9uWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUmVwZWF0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRSZXBlYXQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
YmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVTaGlmdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNlbGlu
ZVNoaWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Jsb2NrU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja1NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
ayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCbG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrQ29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyQmxvY2tFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRDb2xvcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCbG9ja0VuZENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRTdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja0VuZFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kV2lkdGgpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tT
dGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9ja1N0YXJ0Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRT
dHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCbG9ja1N0YXJ0V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFdpZHRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1dpZHRoKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21Db2xv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCb3R0b21Db2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJv
dHRvbUxlZnRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tUmln
aHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90
dG9tV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sbGFwc2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29s
bGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckVuZEVuZFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJh
ZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZU91dHNldCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbWFnZU91dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbWFnZVNsaWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU2xpY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VTb3VyY2UpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVySW1hZ2VTb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVdpZHRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cklubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lQ29sb3IpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5l
Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVySW5saW5lRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRD
b2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbmxpbmVFbmRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRX
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVT
dGFydENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRTdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVTdGFydFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0V2lkdGgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVySW5saW5lU3RhcnRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbmxpbmVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVXaWR0aCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckxlZnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyTGVmdENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRDb2xvcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0U3R5
bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyTGVmdFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0V2lkdGgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyUmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJSaWdodENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0Q29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRTdHlsZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJSaWdodFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRXaWR0aCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJTcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlclNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU3RhcnRFbmRSYWRpdXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
U3RhcnRFbmRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyU3RhcnRTdGFydFJhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydFN0YXJ0
UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3Ap
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyVG9wQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wTGVmdFJhZGl1cyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJUb3BMZWZ0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFJpZ2h0
UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclRvcFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFN0eWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclRvcFdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcldpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcldpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvdHRvbSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3R0
b20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm94U2hhZG93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JveFNoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hTaXppbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0
ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYnJlYWtBZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9icmVha0JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0JlZm9yZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0luc2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0
aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jYXB0aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0Q29sb3IpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xlYXIpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y2xlYXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fY2xpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2NsaXBQYXRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBQYXRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBSdWxlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBS
dWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRp
b24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRpb25GaWx0ZXJz
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbG9yUHJvZmlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2xvclByb2ZpbGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JSZW5kZXJpbmcpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JSZW5k
ZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JTY2hlbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JTY2hlbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uQ291bnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uQ291
bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sdW1uRmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5GaWxsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkdhcCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5HYXApOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
UnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2x1bW5SdWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlQ29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uUnVsZVN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlV2lkdGgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
UnVsZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbHVtblNwYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uU3Bhbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5XaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5X
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2x1bW5zKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJJbmNyZW1l
bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY291bnRlckluY3JlbWVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyUmVzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlclJlc2V0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2N1cnNv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jdXJzb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY3gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY3gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RpcmVjdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kaXNw
bGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rpc3BsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21pbmFudEJhc2VsaW5lKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5
Q2VsbHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZW1wdHlDZWxscyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZUJhY2tncm91bmQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9maWxsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZpbGxPcGFjaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxPcGFjaXR5KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxSdWxlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxS
dWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9maWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhCYXNpcyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4QmFzaXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmxleERpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbGV4RGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhGbG93KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhGbG93KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhH
cm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZsZXhHcm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZsZXhTaHJpbmspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFNocmluayk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4V3JhcCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
V3JhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbG9hdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbG9hdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29sb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RPcGFjaXR5
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Zsb29kT3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mb250KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udERpc3BsYXkpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udERpc3BsYXkp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udEZhbWlseSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250RmFtaWx5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3MpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1
cmVTZXR0aW5ncyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250S2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250S2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemluZyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250T3B0aWNhbFNpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3RyZXRjaCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250U3RyZXRjaCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250U3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTeW50aGVzaXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5
bnRoZXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250VmFyaWFudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEFsdGVybmF0ZXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhbnRBbHRlcm5hdGVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50Q2Fwcyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudENh
cHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhbnRFYXN0QXNpYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRFYXN0QXNpYW4pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlh
bnRMaWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRMaWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnROdW1lcmljKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRWYXJpYW50TnVtZXJpYyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudFBvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50UG9z
aXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZm9udFZhcmlhdGlvblNldHRpbmdzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYXRpb25TZXR0aW5ncyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
V2VpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRXZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ2FwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
QXJlYSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkQXV0b0NvbHVtbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1bW5zKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvRmxvdyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkQXV0b0Zsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZEF1dG9Sb3dzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93cyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRDb2x1bW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZENvbHVtbkVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uRW5kKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HYXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Z3JpZENvbHVtbkdhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtblN0YXJ0KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRHYXAp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZEdhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkUm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93RW5kKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRSb3dHYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZFJvd0dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93U3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd1N0YXJ0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRU
ZW1wbGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQXJlYXMpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRl
QXJlYXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZFRlbXBsYXRlQ29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVDb2x1bW5zKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1w
bGF0ZVJvd3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlUm93cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nUHVuY3R1YXRpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2lu
Z1B1bmN0dWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2hlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VPcmllbnRhdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZU9y
aWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
aW5saW5lU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2spOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRC
bG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFydCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU3Rh
cnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25faW5zZXRJbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmVFbmQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxp
bmVFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25faW5zZXRJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZVN0YXJ0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9p
c29sYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fanVzdGlmeUNvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeUNvbnRlbnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeUl0ZW1zKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2p1c3RpZnlJdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9qdXN0aWZ5U2VsZik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5U2VsZik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9rZXJuaW5nKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2tlcm5p
bmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9sZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2xldHRlclNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyU3BhY2luZyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ0Nv
bG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpZ2h0aW5nQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUJyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVhayk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lSGVpZ2h0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpbmVIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbGlzdFN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0
U3R5bGVJbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0U3R5bGVQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVQb3NpdGlvbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5
bGVUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpc3RTdHlsZVR5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9jayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5CbG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0
YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21hcmdpbkJsb2NrU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJvdHRvbSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5JbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luSW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZUVuZCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVF
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luSW5saW5lU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lU3RhcnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luTGVmdCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5MZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpblJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblRvcCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5U
b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFya2VyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmtlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyRW5kKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlck1pZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJrZXJNaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWFya2VyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFzayk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tUeXBl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hc2tUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX21hdGhTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXRoU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4QmxvY2tTaXplKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJs
b2NrU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXhIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21heElubGluZVNpemUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SW5saW5l
U2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5CbG9ja1NpemUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluQmxvY2tTaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21p
bkhlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9taW5IZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSW5saW5lU2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5JbmxpbmVTaXplKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21pbldp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbldpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhCbGVuZE1vZGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0Rml0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X29iamVjdEZpdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vYmplY3RQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RQb3NpdGlvbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcGFjaXR5KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29w
YWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fb3JkZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fb3JkZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcnBoYW5zKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGlu
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vdXRsaW5lQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVPZmZzZXQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZU9m
ZnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdXRsaW5lU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVXaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5l
V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fb3ZlcmZsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dXcmFwKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93V3JhcCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dmVyZmxvd1gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3ZlcmZsb3dYKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1kpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJl
aGF2aW9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3JYKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxCZWhhdmlvclgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3JZ
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdC
bG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrU3RhcnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Js
b2NrU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcGFkZGluZ0JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQm90dG9tKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVFbmQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGlu
Z0lubGluZVN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nTGVmdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5n
TGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWRkaW5nUmlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdUb3ApOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1Rv
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQWZ0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFr
QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2VCcmVha0JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtJbnNpZGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5z
aWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhaW50T3JkZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFpbnRPcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpblgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGVyc3BlY3RpdmVPcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9y
aWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGxhY2VDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlQ29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUl0ZW1zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlSXRl
bXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fcGxhY2VTZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BsYWNlU2VsZik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyRXZlbnRzKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50ZXJFdmVudHMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcXVvdGVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3F1b3Rlcyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcmVzaXplKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jl
c2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9yb3RhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3dHYXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcngp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcngpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcnkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcnkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2NhbGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2NhbGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVo
YXZpb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxNYXJnaW5CbG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9j
a0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxNYXJnaW5CbG9ja1N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3RhcnQpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsTWFyZ2luQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsTWFyZ2luSW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZUVuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJn
aW5JbmxpbmVFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5lU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5l
U3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsTWFyZ2luTGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5MZWZ0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblJp
Z2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpblJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRvcCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5U
b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9jayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxQYWRkaW5nQmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2NrRW5kKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdC
bG9ja0VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFy
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxQYWRkaW5nQm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b20pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGlu
Z0lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVFbmQpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsUGFkZGluZ0lubGluZUVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lU3RhcnQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
UGFkZGluZ0lubGluZVN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbFBhZGRpbmdSaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nUmlnaHQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ1Rv
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxQYWRkaW5nVG9wKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwQWxpZ24p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsU25hcE1hcmdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0
b20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsU25hcE1hcmdpbkJvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxTbmFwTWFyZ2luTGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luUmlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdp
blJpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Ub3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxT
bmFwU3RvcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlwZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlw
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zaGFwZUltYWdlVGhyZXNob2xkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW4p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2hhcGVNYXJnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2hhcGVPdXRzaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlT3V0c2lkZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmlu
Zyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zaGFwZVJlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3BlYWtBcyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha0FzKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NyYyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zcmMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3RvcENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3N0b3BDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0eSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0eSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc3Ryb2tlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hhcnJh
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdHJva2VEYXNoYXJyYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaG9mZnNldCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZUxpbmVjYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWNhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VMaW5lam9pbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VM
aW5lam9pbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdHJva2VNaXRlcmxpbWl0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVybGltaXQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlT3BhY2l0
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdHJva2VPcGFjaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVdpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZENv
bG9yU2NoZW1lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zdXBwb3J0ZWRDb2xvclNjaGVtZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFiU2l6ZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rh
YmxlTGF5b3V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RhYmxlTGF5b3V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0QWxpZ24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEFuY2hv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0QW5jaG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNv
cmF0aW9uQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Db2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvbkxpbmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dERlY29yYXRpb25MaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU2tpcCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblNr
aXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dERlY29yYXRpb25TdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblN0eWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0
aW9uVGhpY2tuZXNzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpcyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0RW1waGFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVt
cGhhc2lzUG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzUG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEVtcGhhc2lzU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEluZGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0SW5kZW50KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRh
dGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0T3JpZW50YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE92ZXJmbG93KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvdyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
UmVuZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFNoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0U2hhZG93KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRU
cmFuc2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lT2Zmc2V0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRl
cmxpbmVPZmZzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dFVuZGVybGluZVBvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVQb3NpdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdG9wKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RvdWNoQWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoQWN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFu
c2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNmb3JtQm94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUJveCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW4pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJh
bnNmb3JtT3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zv
cm1PcmlnaW5ZKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zv
cm1PcmlnaW5aKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zZm9ybVN0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybVN0eWxlKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb24pOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2l0aW9uRGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25E
dXJhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2l0aW9uRHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblByb3BlcnR5KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25Qcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zbGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2xhdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGkpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJp
ZGkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdW5pY29kZVJhbmdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVSYW5nZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JFZmZlY3QpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZm
ZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3ZlcnRpY2FsQWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92aXNpYmlsaXR5KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxp
dHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2hpdGVTcGFjZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNwYWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpZG93cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWRvd3MpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkdGgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2lsbENoYW5nZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVhayk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkQnJlYWspOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFNw
YWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd29yZFNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFdyYXApOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d3JpdGluZ01vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25feCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96SW5kZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fekluZGV4KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3pvb20pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fem9vbSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRBbGlnbkNvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QWxpZ25JdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnblNlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEFsdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRBbHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRBbmltYXRpb25EZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EZWxheSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRp
b25EaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkR1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2Rl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbk5hbWUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0QW5pbWF0aW9uTmFtZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25QbGF5U3RhdGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5p
bWF0aW9uUGxheVN0YXRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFwcGVhcmFuY2UpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5j
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZHJvcEZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZHJvcEZpbHRlcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNr
ZmFjZVZpc2liaWxpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91
bmRDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRDb21wb3NpdGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kT3JpZ2luKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJhY2tncm91bmRPcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZFNpemUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dy
b3VuZFNpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9y
ZGVyQWZ0ZXJDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlckNvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVy
U3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlcldpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJvcmRlckFmdGVyV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckJlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVDb2xv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJCZWZvcmVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Qm9yZGVyRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRDb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3JkZXJFbmRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJFbmRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJGaXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRml0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckhvcml6b250YWxT
cGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckltYWdl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlckltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclJhZGl1cyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJS
YWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyU3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
U3RhcnRDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0U3R5
bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydFdpZHRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlclN0YXJ0V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJUb3BMZWZ0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlclRvcFJpZ2h0UmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJWZXJ0aWNhbFNwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ24pOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveERlY29yYXRpb25CcmVhayk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3hEaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm94RmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3hGbGV4R3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleEdyb3VwKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
eExpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJveExpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yZGluYWxHcm91cCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3hPcmRpbmFsR3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yaWVudCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3hQYWNrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJveFBhY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UmVmbGVjdCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hSZWZs
ZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJveFNoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hTaGFkb3cpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2l6aW5nKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveFNpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRD
b2x1bW5BeGlzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4aXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRlcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5CcmVha0FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrQmVmb3JlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkJyZWFrQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrSW5zaWRlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJy
ZWFrSW5zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdENvbHVtbkNvdW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkNvdW50KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkZpbGwpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uRmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5HYXApOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29s
dW1uR2FwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdENvbHVtblJ1bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5SdWxlQ29s
b3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uUnVsZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRDb2x1bW5SdWxlU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1
bGVXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRDb2x1bW5TcGFuKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblNwYW4pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1u
V2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Q29sdW1uV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1ucyk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5z
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEN1cnNvclZpc2liaWxpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJpbGl0eSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRG
aWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4
QmFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleEJhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb24pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rmxl
eERpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRGbGV4Rmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4Rmxvdyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4R3Jv
dyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRGbGV4R3Jvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4U2hyaW5rKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTaHJpbmsp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0RmxleFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFdyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udEtlcm5pbmcpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Rm9udEtlcm5pbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udFNtb290aGluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250U21vb3RoaW5n
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEh5cGhlbmF0ZUNoYXJhY3Rlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0SHlwaGVuYXRlTGltaXRBZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEh5cGhlbmF0ZUxpbWl0QmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEh5cGhlbmF0ZUxpbWl0TGluZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRI
eXBoZW5zKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEh5cGhlbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SW5pdGlhbExldHRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRJbml0
aWFsTGV0dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlDb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlDb250ZW50KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEp1c3RpZnlJdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5SXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUFsaWduKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdExpbmVBbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFpbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29u
dGFpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRMaW5lQnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVDbGFtcCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRMaW5lQ2xhbXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUdyaWQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUdyaWQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZVNuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TGluZVNuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9jYWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvY2FsZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMb2dpY2FsSGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbFdp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5BZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFyZ2luQmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5CZWZvcmVDb2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5Cb3R0b21Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5FbmQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFyZ2luRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hcmdpblRvcENvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblRvcENvbGxhcHNlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2sp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFzayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tCb3hJbWFnZU91dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFza0JveEltYWdlUmVwZWF0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
Qm94SW1hZ2VTbGljZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VTbGljZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1h
Z2VTb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291cmNlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVdp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVdpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tDbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0NvbXBvc2l0ZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRN
YXNrSW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza0ltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tPcmlnaW4pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFz
a09yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tQb3NpdGlvblgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9uWCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb25ZKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tQb3NpdGlvblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUmVwZWF0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tTaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tTb3VyY2VUeXBlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4
TG9naWNhbEhlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbFdp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbEhlaWdodCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNaW5Mb2dpY2FsV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbFdpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE5ic3BNb2Rl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE5ic3BNb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE9wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3BhY2l0eSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRP
cmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRPcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0Fm
dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdCZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0JlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRk
aW5nRW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdFbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ1N0YXJ0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBh
ZGRpbmdTdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UHJpbnRDb2xvckFkanVz
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRQcmludENvbG9yQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0
bE9yZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFJ1YnlQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRSdWJ5UG9zaXRpb24pOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
U2hhcGVJbWFnZVRocmVzaG9sZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZUltYWdlVGhyZXNob2xkKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNo
YXBlTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlT3V0c2lkZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRTaGFwZU91dHNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VGV4dERlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29y
YXRpb25Db2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0
aW9uTGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25T
a2lwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU2tpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblN0eWxl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZl
Y3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
RW1waGFzaXNDb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1w
aGFzaXNQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFz
aXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RmlsbENvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRGaWxsQ29sb3IpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dE9yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2VjdXJp
dHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VGV4dFNlY3VyaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTaXplQWRqdXN0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRl
eHRTaXplQWRqdXN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0U3Ryb2tlQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VX
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlV2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0Wm9vbSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0Wm9vbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUcmFuc2Zvcm0pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9y
bU9yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5YKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblkpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtT3JpZ2luWSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5aKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9y
bU9yaWdpblopOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VHJhbnNmb3JtU3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtU3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2l0aW9uRGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJh
bnNpdGlvblByb3BlcnR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlckRyYWcpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlckRyYWcp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VXNlck1vZGlmeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyTW9kaWZ5KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3QpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VXNlclNlbGVjdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX2FwcGxlX2Rhc2hfY29sb3JfZGFzaF9maWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9y
X2Rhc2hfZmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF9zdHlsZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX2FwcGxlX2Rhc2hfcGF5X2Rhc2hfYnV0dG9uX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9k
YXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNo
X2J1dHRvbl9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hfd29yZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX2FwcGxlX2Rhc2hfdHJhaWxpbmdfZGFzaF93b3JkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2NhcHRpb25f
ZGFzaF9zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2NhcHRpb25fZGFzaF9zaWRlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX2h5cGhlbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVucyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0
X2Rhc2hfY29tYmluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfY29tYmluZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2Vw
dWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2Vt
cGhhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNo
X3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9vcmllbnRhdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hf
dGV4dF9kYXNoX3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3Jt
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93b3JkX2Rh
c2hfYnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfd3JpdGluZ19kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rh
c2hfd3JpdGluZ19kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9pbnRlcm5hbF9kYXNoX3RleHRfZGFzaF9hdXRvc2l6
aW5nX2Rhc2hfc3RhdHVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfaW50ZXJuYWxfZGFzaF90ZXh0X2Rhc2hfYXV0b3Npemlu
Z19kYXNoX3N0YXR1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfY29udGVudCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfY29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rh
c2hfaXRlbXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2l0ZW1zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYWxpZ25fZGFzaF9zZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9zZWxm
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYWx0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYW5pbWF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGVsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9kZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rh
c2hfZHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9maWxsX2Rhc2hfbW9k
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FuaW1hdGlvbl9kYXNoX25hbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9uYW1lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRl
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FwcGVhcmFuY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hcHBlYXJhbmNlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYmFja2Ryb3BfZGFzaF9maWx0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJv
cF9kYXNoX2ZpbHRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JhY2tncm91bmRfZGFzaF9jbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9k
YXNoX2NsaXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfY29tcG9zaXRlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JhY2tncm91bmRfZGFzaF9vcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rh
c2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX3NpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXIpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2FmdGVyX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9k
YXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF93aWR0aCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyX2Rhc2hfd2lkdGgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFz
aF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9jb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX2NvbG9yKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2JlZm9yZV9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVm
b3JlX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9s
ZWZ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90dG9tX2Rh
c2hfbGVmdF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9k
YXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90
dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9l
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9lbmRfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2VuZF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfc3R5
bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmRfZGFzaF9zdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9m
aXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9maXQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9ob3Jpem9udGFsX2Rhc2hfc3BhY2luZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9zcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfaW1hZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9z
dGFydF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFz
aF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfc3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX3N0YXJ0X2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90
b3BfZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
dG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3Rv
cF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
dG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92
ZXJ0aWNhbF9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0
aWNhbF9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9hbGlnbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JveF9kYXNoX2FsaWduKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlv
bl9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGlyZWN0aW9uKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYm94X2Rhc2hfZGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hf
ZmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2ZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3hfZGFzaF9mbGV4X2Rhc2hfZ3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4
X2Rhc2hfZ3JvdXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5lcyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX2xpbmVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JkaW5hbF9k
YXNoX2dyb3VwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JkaW5hbF9kYXNoX2dyb3Vw
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94
X2Rhc2hfb3JpZW50KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFjayk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX3BhY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9yZWZsZWN0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcmVmbGVjdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9k
YXNoX3NoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3NoYWRvdyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX3NpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3Npemlu
Zyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NsaXBfZGFzaF9wYXRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xp
cF9kYXNoX3BhdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9heGlzKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfY29sdW1uX2Rhc2hfYXhpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2Jy
ZWFrX2Rhc2hfYWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNo
X2FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNoX2JlZm9yZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfaW5zaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Y29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9pbnNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFz
aF9jb3VudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2NvdW50KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfZmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2Zp
bGwpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9j
b2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9wcm9ncmVzc2lvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3Byb2dyZXNzaW9uKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfY29sdW1uX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9y
dWxlX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9zcGFuKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfc3Bhbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5zKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfY29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNoX3Zpc2liaWxp
dHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9jdXJzb3JfZGFzaF92aXNpYmlsaXR5KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfZmlsdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmlsdGVyKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
ZmxleCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hf
YmFzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfYmFzaXMpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9mbGV4X2Rhc2hfZGlyZWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2RpcmVj
dGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9mbG93KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
ZmxleF9kYXNoX2Zsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZ3Jvdyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2ZsZXhfZGFzaF9ncm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3Nocmlu
ayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9zaHJpbmspOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9m
bGV4X2Rhc2hfd3JhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF93cmFwKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfZm9udF9kYXNoX2tlcm5pbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hf
a2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRfZGFzaF9zbW9vdGhpbmcpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rh
c2hfY2hhcmFjdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVy
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9hZnRlcik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYWZ0ZXIpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2JlZm9yZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVu
YXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9k
YXNoX2xpbWl0X2Rhc2hfbGluZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfaHlwaGVucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2luaXRpYWxfZGFzaF9sZXR0ZXIpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9pbml0aWFsX2Rhc2hfbGV0dGVyKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfanVz
dGlmeV9kYXNoX2NvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVu
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2p1c3RpZnlfZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2p1c3RpZnlfZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9hbGlnbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9hbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFz
aF9ib3hfZGFzaF9jb250YWluKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNo
X2NvbnRhaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfYnJlYWspOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9saW5lX2Rhc2hfYnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfY2xhbXApOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfY2xhbXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rh
c2hfZ3JpZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9ncmlkKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbGluZV9kYXNoX3NuYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfc25hcCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2xvY2FsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xvY2FsZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rh
c2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
YWZ0ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hcmdpbl9kYXNoX2FmdGVyX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXJnaW5fZGFzaF9hZnRlcl9kYXNoX2NvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rh
c2hfYmVmb3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXJnaW5fZGFzaF9iZWZvcmVfZGFzaF9jb2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21h
cmdpbl9kYXNoX2JvdHRvbV9kYXNoX2NvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2lu
X2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9j
b2xsYXBzZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
ZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXJnaW5fZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX3RvcF9kYXNo
X2NvbGxhcHNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfdG9wX2Rhc2hfY29sbGFw
c2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFzayk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21h
c2tfZGFzaF9ib3hfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFz
aF9pbWFnZV9kYXNoX291dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFz
aF9pbWFnZV9kYXNoX291dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9p
bWFnZV9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9p
bWFnZV9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFn
ZV9kYXNoX3NsaWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdl
X2Rhc2hfc2xpY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFz
aF9zb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFz
aF9zb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF93
aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3dp
ZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2NsaXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfY2xpcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jb21wb3NpdGUpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY29tcG9zaXRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19k
YXNoX2ltYWdlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWFza19kYXNoX29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9vcmln
aW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25f
ZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0aW9uX2Rhc2hfeCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3kpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Jl
cGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9yZXBlYXQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9zaXplKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfc291cmNlX2Rhc2hfdHlwZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xv
Z2ljYWxfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rh
c2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21p
bl9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dp
Y2FsX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hf
d2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X25ic3BfZGFzaF9tb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3BhY2l0eSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29y
ZGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfcGFkZGluZ19kYXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2JlZm9y
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9wYWRkaW5nX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2VuZCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfcGVyc3BlY3RpdmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29y
aWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3Bl
Y3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVf
ZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcHJpbnRfZGFzaF9jb2xvcl9kYXNo
X2FkanVzdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3ByaW50X2Rhc2hfY29sb3JfZGFzaF9hZGp1c3Qp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ydGxfZGFzaF9vcmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J0
bF9kYXNoX29yZGVyaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcnVieV9kYXNoX3Bvc2l0aW9uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfcnVieV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVf
ZGFzaF9pbWFnZV9kYXNoX3RocmVzaG9sZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hf
aW1hZ2VfZGFzaF90aHJlc2hvbGQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfbWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hh
cGVfZGFzaF9vdXRzaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9vdXRzaWRlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2NvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfY29tYmluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X2RlY29yYXRpb25fZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0
aW9uX2Rhc2hfbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rh
c2hfbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9lZmZlY3QpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZGVjb3JhdGlvbnNfZGFzaF9pbl9kYXNoX2VmZmVjdCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RleHRfZGFzaF9lbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBo
YXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1w
aGFzaXNfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9maWxsX2Rhc2hfY29s
b3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX29yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX3NpemVfZGFzaF9hZGp1c3QpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2l6ZV9k
YXNoX2FkanVzdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9r
ZV9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX2Nv
bG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
dGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X3pvb20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RyYW5zZm9ybV9kYXNoX29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3gpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Ry
YW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3kpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFz
aF9vcmlnaW5fZGFzaF96KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2lu
X2Rhc2hfeik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX3N0eWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRp
b25fZGFzaF9kZWxheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kZWxheSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25f
ZGFzaF9wcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0
eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9kcmFnKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9k
YXNoX2RyYWcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfbW9kaWZ5KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdXNlcl9kYXNoX21vZGlmeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9zZWxlY3Qp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3Jp
dGluZ19kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF93cml0aW5nX2Rhc2hfbW9kZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGln
bl9kYXNoX2NvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9jb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRlbXMpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9zZWxmKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdu
bWVudF9kYXNoX2Jhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9k
YXNoX2RlbGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2RlbGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlv
bik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb25fZGFzaF9kaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZHVyYXRpb24pOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uX2Rhc2hfZHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rh
c2hfY291bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9u
X2Rhc2hfbmFtZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFz
aF9zdGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9wbGF5X2Rhc2hfc3RhdGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hf
dGltaW5nX2Rhc2hfZnVuY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rp
b24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYXNwZWN0X2Rhc2hfcmF0aW8pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYXNwZWN0X2Rhc2hfcmF0aW8pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2F0dGFjaG1lbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0dGFjaG1lbnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2JsZW5kX2Rhc2hfbW9kZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYmxlbmRfZGFzaF9tb2RlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRfZGFzaF9jbGlwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9jbGlwKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9j
b2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2ltYWdlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9vcmlnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9w
b3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFz
aF9wb3NpdGlvbl9kYXNoX3gpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9yZXBlYXQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFj
a2dyb3VuZF9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rh
c2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYXNlbGluZV9kYXNoX3NoaWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lX2Rhc2hfc2hpZnQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tf
ZGFzaF9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Jsb2NrX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9jayk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Js
b2NrX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hf
YmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9jb2xvcik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfZW5kX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHls
ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Js
b2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRf
ZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfY29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2Nr
X2Rhc2hfc3RhcnRfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hf
d2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3dpZHRoKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2Jsb2NrX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdHlsZSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfd2lkdGgp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfYm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0
b21fZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9jb2xvcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNo
X2xlZnRfZGFzaF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRp
dXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYm90dG9tX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfc3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sbGFwc2UpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfZW5kX2Rh
c2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1cyk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9lbmRfZGFzaF9zdGFydF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9z
dGFydF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291
dHNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9k
YXNoX3JlcGVhdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NsaWNlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lt
YWdlX2Rhc2hfc2xpY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfaW1hZ2VfZGFzaF9zb3VyY2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF93aWR0aCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbWFnZV9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2lubGluZV9kYXNoX2VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9lbmRfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFz
aF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF93aWR0aCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9z
dGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVf
ZGFzaF9zdGFydF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRfZGFzaF9zdHlsZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9k
YXNoX3N0YXJ0X2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRfZGFz
aF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmVfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xlZnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfbGVmdF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xlZnRfZGFzaF9jb2xv
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3N0
eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2xlZnRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hf
d2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JhZGl1cyk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX2NvbG9y
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9z
dHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rh
c2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFj
aW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9lbmRfZGFz
aF9yYWRpdXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9lbmRfZGFzaF9yYWRpdXMpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfc3RhcnRfZGFzaF9zdGFydF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9k
YXNoX3N0YXJ0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0
eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3RvcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rh
c2hfbGVmdF9kYXNoX3JhZGl1cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9sZWZ0X2Rhc2hfcmFk
aXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3dpZHRoKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX3RvcF9kYXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3dpZHRoKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JveF9kYXNoX3NoYWRvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hfZGFzaF9zaGFkb3cpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2l6
aW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JveF9kYXNoX3NpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2FmdGVyKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrX2Rhc2hfYWZ0
ZXIpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYnJlYWtfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9pbnNp
ZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYnJlYWtfZGFzaF9pbnNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVyZWRfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVy
ZWRfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY2FwdGlvbl9kYXNoX3NpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FwdGlvbl9kYXNoX3NpZGUp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Y2FyZXRfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldF9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Ns
aXBfZGFzaF9wYXRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hf
aW50ZXJwb2xhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb24pOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRl
cnBvbGF0aW9uX2Rhc2hfZmlsdGVycyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb25fZGFzaF9m
aWx0ZXJzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Byb2ZpbGUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFz
aF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9zY2hlbWUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sb3JfZGFzaF9zY2hlbWUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfZmlsbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9maWxsKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2dhcCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
bl9kYXNoX3J1bGVfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9zdHlsZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3dpZHRo
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtbl9kYXNoX3NwYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfc3Bhbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF93aWR0aCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2x1bW5fZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rhc2hfaW5jcmVtZW50KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFz
aF9pbmNyZW1lbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY291bnRlcl9kYXNoX3Jlc2V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFzaF9yZXNldCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21p
bmFudF9kYXNoX2Jhc2VsaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rhc2hfYmFzZWxpbmUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlfZGFzaF9j
ZWxscyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9lbXB0eV9kYXNoX2NlbGxzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZV9kYXNoX2JhY2tncm91bmQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxl
X2Rhc2hfYmFja2dyb3VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
aWxsX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfcnVsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfYmFzaXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9k
YXNoX2Jhc2lzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2RpcmVjdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
X2Rhc2hfZmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZ3Jvdyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hf
Z3Jvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbGV4X2Rhc2hfc2hyaW5rKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmspOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXAp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZmxleF9kYXNoX3dyYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZF9kYXNoX2NvbG9yKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zs
b29kX2Rhc2hfb3BhY2l0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZF9kYXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXkp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX2Rpc3BsYXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZhbWlseSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmFtaWx5
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRfZGFzaF9mZWF0dXJlX2Rhc2hfc2V0dGluZ3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZlYXR1cmVfZGFz
aF9zZXR0aW5ncyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250X2Rhc2hfa2VybmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfa2VybmluZyk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfb3B0aWNhbF9kYXNoX3NpemluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfb3B0aWNhbF9kYXNoX3NpemluZyk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250X2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
X2Rhc2hfc3RyZXRjaCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N0eWxlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFz
aF9zeW50aGVzaXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250X2Rhc2hfdmFyaWFudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2FsdGVybmF0ZXMpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5hdGVzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfY2Fw
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2NhcHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9l
YXN0X2Rhc2hfYXNpYW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rhc2hfYXNpYW4p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9saWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFz
aF9saWdhdHVyZXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9udW1lcmljKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92
YXJpYW50X2Rhc2hfbnVtZXJpYyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX3Bvc2l0aW9uKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zv
bnRfZGFzaF92YXJpYW50X2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhdGlvbl9kYXNoX3Nl
dHRpbmdzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRpb25fZGFzaF9zZXR0aW5ncyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfd2Vp
Z2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF93ZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX2hvcml6
b250YWwpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX2hvcml6b250YWwpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFz
aF9vcmllbnRhdGlvbl9kYXNoX3ZlcnRpY2FsKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rhc2hfb3JpZW50YXRpb25fZGFz
aF92ZXJ0aWNhbCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0
b19kYXNoX2NvbHVtbnMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9jb2x1bW5zKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9h
dXRvX2Rhc2hfZmxvdyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3cpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9f
ZGFzaF9yb3dzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfcm93cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF9jb2x1bW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX2VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
Y29sdW1uX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2Nv
bHVtbl9kYXNoX2dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2Nv
bHVtbl9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2dhcCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
cm93KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF9yb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
cm93X2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9nYXApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNo
X2dhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX3N0YXJ0
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF90ZW1wbGF0ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGUpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBs
YXRlX2Rhc2hfYXJlYXMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfYXJlYXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X3RlbXBsYXRlX2Rhc2hfY29sdW1ucyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5z
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX3Jvd3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hf
cm93cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9oYW5naW5nX2Rhc2hfcHVuY3R1YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ19kYXNoX3B1bmN0dWF0aW9u
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ltYWdlX2Rhc2hfb3JpZW50YXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VfZGFzaF9vcmllbnRhdGlvbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9k
YXNoX3JlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3JlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVfZGFzaF9zaXplKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2lubGluZV9kYXNoX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9jayk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lu
c2V0X2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNl
dF9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX3N0YXJ0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2lu
c2V0X2Rhc2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rh
c2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rh
c2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfY29u
dGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9qdXN0aWZ5X2Rhc2hfY29udGVudCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfaXRlbXMpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlm
eV9kYXNoX2l0ZW1zKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9zZWxmKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9zZWxmKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRl
cl9kYXNoX3NwYWNpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyX2Rhc2hfc3BhY2luZyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ19kYXNoX2NvbG9y
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2xpZ2h0aW5nX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9icmVh
ayk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9saW5lX2Rhc2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9oZWlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpc3RfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hf
c3R5bGVfZGFzaF9pbWFnZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rh
c2hfc3R5bGVfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3Rf
ZGFzaF9zdHlsZV9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxv
Y2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9l
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja19kYXNo
X3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX21hcmdpbl9kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rh
c2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9l
bmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNo
X3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2xlZnQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdo
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXJnaW5fZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfdG9wKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX2VuZCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJrZXJfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfbWlkKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX21pZCk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJf
ZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rhc2hfdHlwZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rh
c2hfdHlwZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXRoX2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF0aF9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2Jsb2Nr
X2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfaGVpZ2h0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heF9kYXNoX2hlaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2lu
bGluZV9kYXNoX3NpemUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGgpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hf
YmxvY2tfZGFzaF9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9oZWln
aHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWluX2Rhc2hfaGVpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2lubGluZV9kYXNoX3NpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rh
c2hfaW5saW5lX2Rhc2hfc2l6ZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93aWR0aCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93aWR0aCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhf
ZGFzaF9ibGVuZF9kYXNoX21vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVjdF9k
YXNoX2ZpdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vYmplY3RfZGFzaF9maXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0
X2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9jb2xvcik7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dXRsaW5lX2Rhc2hfb2Zmc2V0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZzZXQpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX3N0
eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX291dGxpbmVfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9k
YXNoX3dpZHRoKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfd3JhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3dyYXApOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZs
b3dfZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3kpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3df
ZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZp
b3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yX2Rhc2hfeCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVo
YXZpb3JfZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3kpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9s
bF9kYXNoX2JlaGF2aW9yX2Rhc2hfeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNo
X2Jsb2NrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tf
ZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Js
b2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9t
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdfZGFzaF9pbmxpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZSk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hf
aW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19k
YXNoX2lubGluZV9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfcmlnaHQp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGFkZGluZ19kYXNoX3JpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3Rv
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9hZnRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9hZnRl
cik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hfYmVm
b3JlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9p
bnNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFpbnRfZGFzaF9vcmRlcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludF9kYXNoX29yZGVyKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3Jp
Z2luX2Rhc2hfeCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3gpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVf
ZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeSk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFj
ZV9kYXNoX2NvbnRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9jb250ZW50KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfaXRlbXMpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGxhY2VfZGFzaF9pdGVtcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX3NlbGYpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9zZWxmKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50
ZXJfZGFzaF9ldmVudHMpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcG9pbnRlcl9kYXNoX2V2ZW50cyk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3dfZGFzaF9nYXApOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93
X2Rhc2hfZ2FwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX2JlaGF2aW9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX2JlaGF2aW9yKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW4pOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxv
Y2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdp
bl9kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b20pOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfbWFyZ2luX2Rhc2hfaW5saW5lKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZSk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFy
Z2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9k
YXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbl9kYXNoX2xlZnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVm
dCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFz
aF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfdG9wKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZyk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2spOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Js
b2NrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Js
b2NrX2Rhc2hfc3RhcnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3Rh
cnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2JvdHRvbSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5n
X2Rhc2hfYm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmUpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2lubGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rh
c2hfZW5kKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
X2Rhc2hfcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0KTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRp
bmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfbGVmdCk7
CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfbGVmdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hf
cmlnaHQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0KTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRp
bmdfZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9z
bmFwX2Rhc2hfYWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX2FsaWduKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF9tYXJnaW4pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFz
aF9tYXJnaW5fZGFzaF9ib3R0b20pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2xl
ZnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2xlZnQpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
c25hcF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJn
aW5fZGFzaF9yaWdodCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfdG9wKTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNo
X3N0b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3N0b3ApOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNo
X3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3R5cGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9pbWFnZV9kYXNo
X3RocmVzaG9sZCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hf
bWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3NoYXBlX2Rhc2hfbWFyZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfb3V0c2lkZSk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9k
YXNoX291dHNpZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2hhcGVfZGFzaF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9yZW5kZXJpbmcp
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c3BlYWtfZGFzaF9hcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9jb2xvcik7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3RvcF9kYXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcF9kYXNoX29wYWNpdHkpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rh
c2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfY29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFycmF5KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0
cm9rZV9kYXNoX2Rhc2hhcnJheSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNob2Zmc2V0KTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X2Rhc2hvZmZzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbGluZWNhcCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lY2FwKTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0
cm9rZV9kYXNoX2xpbmVqb2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX21p
dGVybGltaXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbWl0ZXJsaW1pdCk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9vcGFjaXR5KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZV9kYXNoX29wYWNpdHkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lkdGgpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lk
dGgpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc3VwcG9ydGVkX2Rhc2hfY29sb3JfZGFzaF9zY2hlbWVzKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2Nv
bG9yX2Rhc2hfc2NoZW1lcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90YWJfZGFzaF9zaXplKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RhYl9kYXNoX3NpemUpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVfZGFz
aF9sYXlvdXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGFibGVfZGFzaF9sYXlvdXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FsaWduKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9hbGlnbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0X2Rhc2hfYW5jaG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbmNob3IpOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2Rl
Y29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFz
aF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNv
cmF0aW9uX2Rhc2hfbGluZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUpOwpzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2RlY29yYXRpb25fZGFzaF9za2lwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tp
cCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9u
X2Rhc2hfc3R5bGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3MpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3MpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhhc2lzKTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF9lbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9jb2xvcik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9z
dHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfaW5kZW50KTsK
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF9pbmRlbnQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX29yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9vcmll
bnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0X2Rhc2hfb3ZlcmZsb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX292ZXJmbG93KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9yZW5kZXJpbmcpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3JlbmRlcmluZyk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfc2hhZG93KTsKc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9zaGFkb3cpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3RyYW5zZm9ybSk7CnN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdHJhbnNmb3Jt
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9k
YXNoX29mZnNldCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfcG9zaXRpb24pOwpzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNo
X3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hfYWN0aW9uKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hf
YWN0aW9uKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RyYW5zZm9ybV9kYXNoX2JveCk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9ib3gpOwpzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3Jt
X2Rhc2hfb3JpZ2luKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbik7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmln
aW5fZGFzaF94KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3gpOwpzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hf
b3JpZ2luX2Rhc2hfeSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95KTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9k
YXNoX29yaWdpbl9kYXNoX3opOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeik7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zv
cm1fZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9zdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfZGVs
YXkpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbl9kYXNoX2RlbGF5KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbik7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
cmFuc2l0aW9uX2Rhc2hfZHVyYXRpb24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX3Byb3BlcnR5KTsKc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25fZGFzaF9wcm9wZXJ0eSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb24p
OwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9iaWRp
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3VuaWNvZGVfZGFzaF9iaWRpKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9yYW5nZSk7CnN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hf
cmFuZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdmVjdG9yX2Rhc2hfZWZmZWN0KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3Rvcl9kYXNoX2VmZmVjdCk7CnN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZXJ0aWNhbF9k
YXNoX2FsaWduKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ24pOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFzaF9zcGFjZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0
ZV9kYXNoX3NwYWNlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dpbGxfZGFzaF9jaGFuZ2UpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbF9kYXNoX2NoYW5nZSk7CnN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rh
c2hfYnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd29yZF9kYXNoX2JyZWFrKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9zcGFjaW5nKTsKc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFz
aF9zcGFjaW5nKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dvcmRfZGFzaF93cmFwKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF93cmFwKTsKc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdfZGFzaF9t
b2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dyaXRpbmdfZGFzaF9tb2RlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3pfZGFzaF9pbmRleCk7CnN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl96X2Rhc2hfaW5kZXgpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YkNhcHRpb25TaWRlKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2VwdWJDYXB0aW9uU2lkZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViSHlwaGVucyk7CnN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViSHlwaGVu
cyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9lcHViVGV4dENvbWJpbmUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRDb21iaW5lKTsKc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXMpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZXB1YlRleHRFbXBoYXNpcyk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzQ29sb3IpOwpzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNp
c0NvbG9yKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTdHlsZSk7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU3R5bGUpOwpz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YlRleHRPcmllbnRhdGlvbik7CnN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dE9yaWVudGF0aW9uKTsKc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3Jt
KTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2VwdWJUZXh0VHJhbnNmb3JtKTsKc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJXb3JkQnJlYWspOwpzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YldvcmRCcmVhayk7CnN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHVi
V3JpdGluZ01vZGUpOwpzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZXB1YldyaXRpbmdNb2RlKTsKCmNsYXNzIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpwdWJs
aWM6CiAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwogICAgc3RhdGljIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ewogICAgICAgIEpTQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGU+KHZt
LmhlYXApKSBKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICByZXR1
cm4gcHRyOwogICAgfQoKICAgIERFQ0xBUkVfSU5GTzsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgogICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQogICAgewogICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKEpTQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZSwgQmFzZSk7
CiAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwogICAgfQogICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgIHsKICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICB9Cgpwcml2YXRlOgogICAgSlNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQogICAgewog
ICAgfQoKICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwp9OwpTVEFUSUNfQVNTRVJU
X0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGUsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZTo6QmFzZSk7Cgp1c2luZyBKU0NTU1N0eWxlRGVj
bGFyYXRpb25ET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj47Cgp0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKewogICAgVU5VU0VEX1BB
UkFNKHZtKTsKICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKfQoK
dGVtcGxhdGU8PiB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CnsKICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJDU1NTdHlsZURl
Y2xhcmF0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwp9Cgp0ZW1wbGF0ZTw+IGNv
bnN0IENsYXNzSW5mbyBKU0NTU1N0eWxlRGVjbGFyYXRpb25ET01Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDU1NTdHlsZURlY2xhcmF0aW9uRE9NQ29uc3RydWN0
b3IpIH07CgovKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KCnN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
ewogICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbkNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogICAgeyAiY3NzVGV4dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Nzc1RleHQp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dCkgfSB9LAogICAgeyAibGVuZ3RoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZW5ndGgp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigw
KSB9IH0sCiAgICB7ICJwYXJlbnRSdWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYXJlbnRSdWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgeyAiY3NzRmxvYXQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NG
bG9hdCkgfSB9LAogICAgeyAiQXBwbGVDb2xvckZpbHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX0Fw
cGxlQ29sb3JGaWx0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVDb2xvckZpbHRlcikg
fSB9LAogICAgeyAiQXBwbGVQYXlCdXR0b25TdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxl
UGF5QnV0dG9uU3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25TdHls
ZSkgfSB9LAogICAgeyAiQXBwbGVQYXlCdXR0b25UeXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBw
bGVQYXlCdXR0b25UeXBlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlw
ZSkgfSB9LAogICAgeyAiQXBwbGVUcmFpbGluZ1dvcmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBs
ZVRyYWlsaW5nV29yZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVRyYWlsaW5nV29yZCkg
fSB9LAogICAgeyAiRXB1YkNhcHRpb25TaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YkNhcHRp
b25TaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9uU2lkZSkgfSB9LAogICAg
eyAiRXB1Ykh5cGhlbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVucyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVucykgfSB9LAogICAgeyAiRXB1YlRleHRDb21iaW5lIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRDb21iaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X0VwdWJUZXh0Q29tYmluZSkgfSB9LAogICAgeyAiRXB1YlRleHRFbXBoYXNpcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRl
eHRFbXBoYXNpcykgfSB9LAogICAgeyAiRXB1YlRleHRFbXBoYXNpc0NvbG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc0NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0Vw
dWJUZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAiRXB1YlRleHRFbXBoYXNpc1N0eWxlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc1N0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX0VwdWJUZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAiRXB1YlRleHRPcmllbnRh
dGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0T3JpZW50YXRpb24pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fRXB1YlRleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAiRXB1YlRleHRUcmFu
c2Zvcm0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dFRyYW5zZm9ybSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9FcHViVGV4dFRyYW5zZm9ybSkgfSB9LAogICAgeyAiRXB1YldvcmRCcmVhayIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWspLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YldvcmRCcmVhaykgfSB9LAogICAgeyAiRXB1YldyaXRpbmdNb2RlIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fRXB1YldyaXRpbmdNb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXcml0aW5n
TW9kZSkgfSB9LAogICAgeyAiSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1cyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX0ludGVybmFsVGV4dEF1dG9zaXppbmdTdGF0dXMpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1cykgfSB9LAogICAgeyAiV2Via2l0QWxp
Z25Db250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25Db250ZW50KSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduQ29udGVudCkgfSB9LAogICAgeyAiV2Via2l0QWxp
Z25JdGVtcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduSXRlbXMpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtcykgfSB9LAogICAgeyAiV2Via2l0QWxpZ25TZWxm
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25TZWxmKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFsaWduU2VsZikgfSB9LAogICAgeyAiV2Via2l0QWx0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QWx0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsdCkgfSB9LAog
ICAgeyAiV2Via2l0QW5pbWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9u
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbikgfSB9LAogICAgeyAiV2Vi
a2l0QW5pbWF0aW9uRGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EZWxh
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EZWxheSkgfSB9LAogICAg
eyAiV2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkRp
cmVjdGlvbikgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRBbmltYXRpb25EdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRBbmltYXRpb25EdXJhdGlvbikgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uRmlsbE1v
ZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25GaWxsTW9kZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25GaWxsTW9kZSkgfSB9LAogICAgeyAiV2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudCkgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uTmFtZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uTmFtZSkgfSB9LAogICAgeyAiV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSkgfSB9LAogICAgeyAiV2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25UaW1p
bmdGdW5jdGlvbikgfSB9LAogICAgeyAiV2Via2l0QXBwZWFyYW5jZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFwcGVhcmFuY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFy
YW5jZSkgfSB9LAogICAgeyAiV2Via2l0QmFja2Ryb3BGaWx0ZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCYWNrZHJvcEZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNr
ZHJvcEZpbHRlcikgfSB9LAogICAgeyAiV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSkgfSB9LAogICAgeyAiV2Via2l0QmFja2dyb3Vu
ZENsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCkgfSB9LAogICAgeyAiV2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRDb21w
b3NpdGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkg
fSB9LAogICAgeyAiV2Via2l0QmFja2dyb3VuZE9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJhY2tncm91bmRPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dy
b3VuZE9yaWdpbikgfSB9LAogICAgeyAiV2Via2l0QmFja2dyb3VuZFNpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCYWNrZ3JvdW5kU2l6ZSkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQWZ0ZXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJBZnRlcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQWZ0ZXJT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyV2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkgfSB9LAog
ICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
QmVmb3JlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZSkgfSB9LAog
ICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJCZWZvcmVDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZv
cmVDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQmVmb3JlV2lk
dGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0aCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQm90dG9t
TGVmdFJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cykgfSB9LAogICAgeyAi
V2Via2l0Qm9yZGVyRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZCkgfSB9LAogICAgeyAiV2Via2l0Qm9y
ZGVyRW5kQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRDb2xvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRDb2xvcikgfSB9LAogICAgeyAiV2Vi
a2l0Qm9yZGVyRW5kU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSkgfSB9LAogICAg
eyAiV2Via2l0Qm9yZGVyRW5kV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJF
bmRXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRXaWR0aCkgfSB9
LAogICAgeyAiV2Via2l0Qm9yZGVyRml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
Rml0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckZpdCkgfSB9LAogICAgeyAi
V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVySW1hZ2UiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJJbWFnZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJJbWFnZSkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyUmFkaXVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyUmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlclJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyU3RhcnQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJTdGFydCkgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyU3RhcnRDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0Q29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyU3RhcnRDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyU3RhcnRT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0U3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyU3RhcnRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRXaWR0aCkgfSB9LAog
ICAgeyAiV2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJvcmRlclRvcExlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
VG9wTGVmdFJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cykgfSB9LAogICAgeyAiV2Via2l0
Qm9yZGVyVmVydGljYWxTcGFjaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZykgfSB9LAogICAgeyAiV2Via2l0Qm94QWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3hBbGlnbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hBbGlnbikgfSB9
LAogICAgeyAiV2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERl
Y29yYXRpb25CcmVhaykgfSB9LAogICAgeyAiV2Via2l0Qm94RGlyZWN0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJveERpcmVjdGlvbikgfSB9LAogICAgeyAiV2Via2l0Qm94RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJveEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleCkg
fSB9LAogICAgeyAiV2Via2l0Qm94RmxleEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm94RmxleEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZsZXhHcm91cCkg
fSB9LAogICAgeyAiV2Via2l0Qm94TGluZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hM
aW5lcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hMaW5lcykgfSB9LAogICAgeyAi
V2Via2l0Qm94T3JkaW5hbEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94T3JkaW5h
bEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cCkgfSB9
LAogICAgeyAiV2Via2l0Qm94T3JpZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94T3Jp
ZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yaWVudCkgfSB9LAogICAgeyAi
V2Via2l0Qm94UGFjayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFBhY2spLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UGFjaykgfSB9LAogICAgeyAiV2Via2l0Qm94UmVmbGVj
dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3QpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94UmVmbGVjdCkgfSB9LAogICAgeyAiV2Via2l0Qm94U2hhZG93Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2hhZG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJveFNoYWRvdykgfSB9LAogICAgeyAiV2Via2l0Qm94U2l6aW5nIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94U2l6aW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNp
emluZykgfSB9LAogICAgeyAiV2Via2l0Q2xpcFBhdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRDbGlwUGF0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDbGlwUGF0aCkgfSB9LAog
ICAgeyAiV2Via2l0Q29sdW1uQXhpcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkF4
aXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQXhpcykgfSB9LAogICAgeyAi
V2Via2l0Q29sdW1uQnJlYWtBZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJy
ZWFrQWZ0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQnJlYWtBZnRlcikg
fSB9LAogICAgeyAiV2Via2l0Q29sdW1uQnJlYWtCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRDb2x1bW5CcmVha0JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5CcmVha0JlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uQnJlYWtJbnNpZGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZSkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uQ291
bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5Db3VudCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRDb2x1bW5Db3VudCkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uRmlsbCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkZpbGwpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Q29sdW1uRmlsbCkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uR2FwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uR2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtbkdhcCkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5Qcm9ncmVzc2lvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUnVsZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Q29sdW1uUnVsZSkgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUnVsZUNvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUNvbG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENvbHVtblJ1bGVDb2xvcikgfSB9LAogICAgeyAiV2Via2l0Q29sdW1uUnVs
ZVN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVN0eWxlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0
Q29sdW1uUnVsZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVXaWR0aCkgfSB9LAogICAg
eyAiV2Via2l0Q29sdW1uU3BhbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblNwYW4p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uU3BhbikgfSB9LAogICAgeyAiV2Vi
a2l0Q29sdW1uV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aCkgfSB9LAogICAgeyAiV2Via2l0
Q29sdW1ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbnMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1ucykgfSB9LAogICAgeyAiV2Via2l0Q3Vyc29yVmlzaWJpbGl0
eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEN1cnNvclZpc2liaWxpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q3Vyc29yVmlzaWJpbGl0eSkgfSB9LAogICAgeyAiV2Via2l0Rmls
dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmlsdGVyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZpbHRlcikgfSB9LAogICAgeyAiV2Via2l0RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleCkgfSB9LAog
ICAgeyAiV2Via2l0RmxleEJhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEJhc2lz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhCYXNpcykgfSB9LAogICAgeyAiV2Vi
a2l0RmxleERpcmVjdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhEaXJlY3Rpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleERpcmVjdGlvbikgfSB9LAogICAgeyAi
V2Via2l0RmxleEZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4RmxvdyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4RmxvdykgfSB9LAogICAgeyAiV2Via2l0RmxleEdy
b3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R3JvdyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRGbGV4R3JvdykgfSB9LAogICAgeyAiV2Via2l0RmxleFNocmluayIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhTaHJpbmspLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0RmxleFNocmluaykgfSB9LAogICAgeyAiV2Via2l0RmxleFdyYXAiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRGbGV4V3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4V3Jh
cCkgfSB9LAogICAgeyAiV2Via2l0Rm9udEtlcm5pbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRGb250S2VybmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZykg
fSB9LAogICAgeyAiV2Via2l0Rm9udFNtb290aGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZvbnRTbW9vdGhpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udFNtb290aGlu
ZykgfSB9LAogICAgeyAiV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEh5cGhlbmF0ZUNoYXJhY3RlcikgfSB9LAogICAgeyAiV2Via2l0SHlwaGVuYXRlTGltaXRBZnRl
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikgfSB9LAogICAgeyAiV2Vi
a2l0SHlwaGVuYXRlTGltaXRCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5h
dGVMaW1pdEJlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1p
dEJlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcykgfSB9LAogICAgeyAiV2Via2l0SHlwaGVucyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0SHlwaGVucykgfSB9LAogICAgeyAiV2Via2l0SW5pdGlhbExldHRlciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEluaXRpYWxMZXR0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0SW5pdGlhbExldHRlcikgfSB9LAogICAgeyAiV2Via2l0SnVzdGlmeUNvbnRlbnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRKdXN0aWZ5Q29udGVudCkgfSB9LAogICAgeyAiV2Via2l0SnVzdGlmeUl0ZW1zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SnVzdGlmeUl0ZW1zKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEp1c3RpZnlJdGVtcykgfSB9LAogICAgeyAiV2Via2l0TGluZUFsaWduIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdExpbmVBbGlnbikgfSB9LAogICAgeyAiV2Via2l0TGluZUJveENvbnRhaW4iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRMaW5lQm94Q29udGFpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQm94Q29udGFpbikgfSB9LAogICAgeyAiV2Via2l0TGluZUJyZWFrIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dExpbmVCcmVhaykgfSB9LAogICAgeyAiV2Via2l0TGluZUNsYW1wIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TGluZUNsYW1wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVDbGFt
cCkgfSB9LAogICAgeyAiV2Via2l0TGluZUdyaWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRM
aW5lR3JpZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lR3JpZCkgfSB9LAogICAg
eyAiV2Via2l0TGluZVNuYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCkgfSB9LAogICAgeyAiV2Via2l0TG9j
YWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9jYWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExvY2FsZSkgfSB9LAogICAgeyAiV2Via2l0TG9naWNhbEhlaWdodCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAiV2Via2l0TG9naWNhbFdpZHRoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQWZ0ZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXJnaW5BZnRlcikgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0
TWFyZ2luQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQmVmb3JlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luQ29s
bGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0TWFy
Z2luRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luRW5kKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hcmdpbkVuZCkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luU3RhcnQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5TdGFydCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXJnaW5TdGFydCkgfSB9LAogICAgeyAiV2Via2l0TWFyZ2luVG9wQ29sbGFw
c2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSkgfSB9LAogICAgeyAiV2Via2l0
TWFzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2spLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFzaykgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tCb3hJbWFnZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdlT3V0c2V0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlT3V0c2V0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91dHNldCkgfSB9LAogICAgeyAiV2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCkgfSB9LAog
ICAgeyAiV2Via2l0TWFza0JveEltYWdlU2xpY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXNrQm94SW1hZ2VTbGljZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1h
Z2VTbGljZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdlU291cmNlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlU291cmNlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0JveEltYWdl
V2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCkgfSB9LAogICAgeyAiV2Vi
a2l0TWFza0NsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcCkgfSB9LAogICAgeyAiV2Via2l0TWFza0NvbXBv
c2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDb21wb3NpdGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza0NvbXBvc2l0ZSkgfSB9LAogICAgeyAiV2Via2l0TWFza0lt
YWdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0ltYWdlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdE1hc2tJbWFnZSkgfSB9LAogICAgeyAiV2Via2l0TWFza09yaWdpbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza09yaWdpbikgfSB9LAogICAgeyAiV2Via2l0TWFza1Bvc2l0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1hc2tQb3NpdGlvbikgfSB9LAogICAgeyAiV2Via2l0TWFza1Bvc2l0aW9uWCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza1Bvc2l0aW9uWCkgfSB9LAogICAgeyAiV2Via2l0TWFza1Bvc2l0aW9uWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblkpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFza1Bvc2l0aW9uWSkgfSB9LAogICAgeyAiV2Via2l0TWFza1JlcGVhdCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tSZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza1JlcGVhdCkgfSB9LAogICAgeyAiV2Via2l0TWFza1NpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXNrU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
U2l6ZSkgfSB9LAogICAgeyAiV2Via2l0TWFza1NvdXJjZVR5cGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXNrU291cmNlVHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
U291cmNlVHlwZSkgfSB9LAogICAgeyAiV2Via2l0TWF4TG9naWNhbEhlaWdodCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1heExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWF4TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAiV2Via2l0TWF4TG9naWNhbFdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1heExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAiV2Via2l0TWluTG9n
aWNhbEhlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAi
V2Via2l0TWluTG9naWNhbFdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNh
bFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aCkgfSB9
LAogICAgeyAiV2Via2l0TmJzcE1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9k
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9kZSkgfSB9LAogICAgeyAiV2Vi
a2l0T3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE9wYWNpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0T3BhY2l0eSkgfSB9LAogICAgeyAiV2Via2l0T3JkZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRP
cmRlcikgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ0FmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0UGFkZGluZ0FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdB
ZnRlcikgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ0JlZm9yZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFBhZGRpbmdCZWZvcmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGlu
Z0JlZm9yZSkgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ0VuZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFBhZGRpbmdFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0Vu
ZCkgfSB9LAogICAgeyAiV2Via2l0UGFkZGluZ1N0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UGFkZGluZ1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFy
dCkgfSB9LAogICAgeyAiV2Via2l0UGVyc3BlY3RpdmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRQZXJzcGVjdGl2ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZSkg
fSB9LAogICAgeyAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJz
cGVjdGl2ZU9yaWdpbikgfSB9LAogICAgeyAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCkgfSB9LAogICAgeyAiV2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5Z
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSkgfSB9LAog
ICAgeyAiV2Via2l0UHJpbnRDb2xvckFkanVzdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBy
aW50Q29sb3JBZGp1c3QpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UHJpbnRDb2xvckFk
anVzdCkgfSB9LAogICAgeyAiV2Via2l0UnRsT3JkZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRSdGxPcmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdGxPcmRlcmlu
ZykgfSB9LAogICAgeyAiV2Via2l0UnVieVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UnVieVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ1YnlQb3NpdGlv
bikgfSB9LAogICAgeyAiV2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0U2hhcGVJbWFnZVRocmVzaG9sZCkgfSB9LAogICAgeyAiV2Via2l0U2hhcGVNYXJnaW4iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU1hcmdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRTaGFwZU1hcmdpbikgfSB9LAogICAgeyAiV2Via2l0U2hhcGVPdXRzaWRlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVPdXRzaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFNoYXBlT3V0c2lkZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dENvbWJpbmUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Q29tYmluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUZXh0Q29tYmluZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0RGVjb3JhdGlvbikgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb25D
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uQ29sb3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Db2xvcikgfSB9LAogICAgeyAi
V2Via2l0VGV4dERlY29yYXRpb25MaW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERl
Y29yYXRpb25MaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9u
TGluZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb25Ta2lwIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Ta2lwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRleHREZWNvcmF0aW9uU2tpcCkgfSB9LAogICAgeyAiV2Via2l0VGV4dERlY29yYXRpb25T
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25TdHlsZSkgfSB9LAogICAgeyAi
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkgfSB9LAogICAgeyAiV2Via2l0VGV4dEVtcGhhc2lzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFRleHRFbXBoYXNpcykgfSB9LAogICAgeyAiV2Via2l0VGV4dEVtcGhhc2lzQ29sb3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAiV2Via2l0VGV4
dEVtcGhhc2lzUG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQ
b3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlv
bikgfSB9LAogICAgeyAiV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0RW1waGFzaXNTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dEZpbGxDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dEZpbGxDb2xvcikgfSB9LAogICAgeyAiV2Via2l0VGV4dE9yaWVudGF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dE9yaWVudGF0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFRleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAiV2Via2l0VGV4dFNlY3Vy
aXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNlY3VyaXR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFRleHRTZWN1cml0eSkgfSB9LAogICAgeyAiV2Via2l0VGV4dFNpemVB
ZGp1c3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U2l6ZUFkanVzdCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U2l6ZUFkanVzdCkgfSB9LAogICAgeyAiV2Via2l0VGV4
dFN0cm9rZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZSkgfSB9LAogICAgeyAiV2Via2l0VGV4dFN0cm9r
ZUNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUNvbG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VDb2xvcikgfSB9LAogICAgeyAiV2Via2l0
VGV4dFN0cm9rZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aCkgfSB9LAogICAg
eyAiV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VGV4dFVuZGVybGluZVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRV
bmRlcmxpbmVQb3NpdGlvbikgfSB9LAogICAgeyAiV2Via2l0VGV4dFpvb20iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUZXh0Wm9vbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
Wm9vbSkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3JtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybSkgfSB9
LAogICAgeyAiV2Via2l0VHJhbnNmb3JtT3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtT3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9y
aWdpbikgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtT3JpZ2luWCkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWSkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNmb3Jt
T3JpZ2luWiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblopLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWikgfSB9LAogICAgeyAiV2Vi
a2l0VHJhbnNmb3JtU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZSkgfSB9LAogICAg
eyAiV2Via2l0VHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbikgfSB9LAogICAgeyAiV2Vi
a2l0VHJhbnNpdGlvbkRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkRl
bGF5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EZWxheSkgfSB9LAog
ICAgeyAiV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbikgfSB9LAogICAgeyAiV2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblByb3BlcnR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSkgfSB9LAogICAgeyAiV2Via2l0VHJhbnNpdGlv
blRpbWluZ0Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbikgfSB9LAogICAgeyAiV2Via2l0VXNlckRyYWciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRVc2VyRHJhZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZykgfSB9
LAogICAgeyAiV2Via2l0VXNlck1vZGlmeSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJN
b2RpZnkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlck1vZGlmeSkgfSB9LAogICAg
eyAiV2Via2l0VXNlclNlbGVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJTZWxlY3Qp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlclNlbGVjdCkgfSB9LAogICAgeyAiV2Vi
a2l0V3JpdGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRXcml0aW5nTW9kZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRXcml0aW5nTW9kZSkgfSB9LAogICAgeyAiYWxpZ25D
b250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25Db250ZW50KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduQ29udGVudCkgfSB9LAogICAgeyAiYWxpZ25JdGVtcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduSXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtcykgfSB9
LAogICAgeyAiYWxpZ25TZWxmIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25TZWxmKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2FsaWduU2VsZikgfSB9LAogICAgeyAiYWxpZ25tZW50QmFzZWxpbmUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbm1lbnRCYXNlbGluZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbGlnbm1lbnRCYXNlbGluZSkgfSB9LAogICAgeyAiYWxsIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYWxsKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbCkgfSB9LAogICAgeyAiYWx0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYWx0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsdCkgfSB9LAogICAg
eyAiYW5pbWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbikgfSB9LAogICAgeyAiYW5pbWF0aW9uRGVsYXkiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25EZWxheSkgfSB9LAogICAgeyAiYW5pbWF0aW9uRGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uRGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRp
cmVjdGlvbikgfSB9LAogICAgeyAiYW5pbWF0aW9uRHVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25EdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EdXJh
dGlvbikgfSB9LAogICAgeyAiYW5pbWF0aW9uRmlsbE1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bmltYXRpb25GaWxsTW9kZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25GaWxsTW9k
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25JdGVyYXRpb25Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25JdGVyYXRpb25Db3VudCkgfSB9LAogICAgeyAiYW5pbWF0aW9uTmFtZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uTmFt
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uUGxheVN0YXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5p
bWF0aW9uUGxheVN0YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25UaW1pbmdGdW5jdGlvbikgfSB9LAogICAgeyAiYXNwZWN0UmF0aW8iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hc3BlY3RSYXRpbyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RSYXRpbykgfSB9
LAogICAgeyAiYmFja2dyb3VuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmQpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZCkgfSB9LAogICAgeyAiYmFja2dyb3VuZEF0dGFj
aG1lbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudCkgfSB9LAogICAgeyAiYmFja2dyb3Vu
ZEJsZW5kTW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRCbGVuZE1vZGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEJsZW5kTW9kZSkgfSB9LAogICAgeyAiYmFja2dy
b3VuZENsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcCkgfSB9LAogICAgeyAiYmFja2dyb3VuZENvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRDb2xvcikgfSB9LAogICAgeyAiYmFja2dyb3VuZEltYWdlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZEltYWdlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRJbWFnZSkgfSB9LAogICAgeyAiYmFja2dyb3VuZE9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZE9yaWdp
bikgfSB9LAogICAgeyAiYmFja2dyb3VuZFBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFj
a2dyb3VuZFBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlv
bikgfSB9LAogICAgeyAiYmFja2dyb3VuZFBvc2l0aW9uWCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRQb3NpdGlvblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0
aW9uWCkgfSB9LAogICAgeyAiYmFja2dyb3VuZFBvc2l0aW9uWSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRQb3NpdGlvblkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBv
c2l0aW9uWSkgfSB9LAogICAgeyAiYmFja2dyb3VuZFJlcGVhdCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRSZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFJlcGVh
dCkgfSB9LAogICAgeyAiYmFja2dyb3VuZFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3Jv
dW5kU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2l6ZSkgfSB9LAogICAg
eyAiYmFzZWxpbmVTaGlmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnQpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVTaGlmdCkgfSB9LAogICAgeyAiYmxvY2tTaXplIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmxvY2tTaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2Nr
U2l6ZSkgfSB9LAogICAgeyAiYm9yZGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcikgfSB9LAogICAgeyAiYm9yZGVyQmxvY2siLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9jaykgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tDb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJsb2NrQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tDb2xvcikg
fSB9LAogICAgeyAiYm9yZGVyQmxvY2tFbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a0VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZCkgfSB9LAogICAgeyAi
Ym9yZGVyQmxvY2tFbmRDb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kQ29s
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRDb2xvcikgfSB9LAogICAg
eyAiYm9yZGVyQmxvY2tFbmRTdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5k
U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRTdHlsZSkgfSB9LAog
ICAgeyAiYm9yZGVyQmxvY2tFbmRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2Nr
RW5kV2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRXaWR0aCkgfSB9
LAogICAgeyAiYm9yZGVyQmxvY2tTdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2Nr
U3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydCkgfSB9LAogICAg
eyAiYm9yZGVyQmxvY2tTdGFydENvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tT
dGFydENvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvcikg
fSB9LAogICAgeyAiYm9yZGVyQmxvY2tTdGFydFN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyQmxvY2tTdGFydFN0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3Rh
cnRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tTdGFydFdpZHRoIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyQmxvY2tTdGFydFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrU3RhcnRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tTdHlsZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckJsb2NrU3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyQmxvY2tXaWR0aCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckJsb2NrV2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tX
aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyQm90dG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
Qm90dG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbSkgfSB9LAogICAgeyAi
Ym9yZGVyQm90dG9tQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21Db2xvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21Db2xvcikgfSB9LAogICAgeyAiYm9y
ZGVyQm90dG9tTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUxlZnRS
YWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tTGVmdFJhZGl1cykgfSB9
LAogICAgeyAiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21S
aWdodFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyQm90dG9tU3R5bGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCb3R0b21TdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0
b21TdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyQm90dG9tV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCb3R0b21XaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21X
aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyQ29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJDb2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xsYXBzZSkgfSB9LAog
ICAgeyAiYm9yZGVyQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyRW5kRW5kUmFk
aXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckVuZEVuZFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyRW5kU3RhcnRS
YWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1cyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVySW1h
Z2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbWFnZSkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VPdXRzZXQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbWFnZU91dHNldCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bWFnZU91dHNldCkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VSZXBlYXQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbWFnZVJlcGVhdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFn
ZVJlcGVhdCkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VTbGljZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlU2xpY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VTbGlj
ZSkgfSB9LAogICAgeyAiYm9yZGVySW1hZ2VTb3VyY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbWFnZVNvdXJjZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNvdXJjZSkg
fSB9LAogICAgeyAiYm9yZGVySW1hZ2VXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklt
YWdlV2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VXaWR0aCkgfSB9LAog
ICAgeyAiYm9yZGVySW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5l
Q29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVDb2xvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVDb2xvcikgfSB9LAogICAgeyAiYm9yZGVySW5saW5lRW5k
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcklubGluZUVuZCkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lRW5kQ29sb3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRDb2xvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVFbmRDb2xvcikgfSB9LAogICAgeyAiYm9yZGVySW5saW5lRW5kU3R5
bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5l
RW5kV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVy
SW5saW5lU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydCkgfSB9LAogICAgeyAiYm9yZGVySW5s
aW5lU3RhcnRDb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRDb2xvcikgfSB9LAogICAg
eyAiYm9yZGVySW5saW5lU3RhcnRTdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGlu
ZVN0YXJ0U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRTdHls
ZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lU3RhcnRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcklubGluZVN0YXJ0V2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5s
aW5lU3RhcnRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bmxpbmVTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVySW5saW5lV2lkdGgiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJJbmxpbmVXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxp
bmVXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyTGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckxlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdCkgfSB9LAogICAgeyAiYm9y
ZGVyTGVmdENvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdENvbG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyTGVmdFN0
eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFN0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlckxlZnRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyTGVmdFdpZHRoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckxlZnRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyUmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyUmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJhZGl1cykgfSB9
LAogICAgeyAiYm9yZGVyUmlnaHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodCkgfSB9LAogICAgeyAiYm9yZGVyUmlnaHRD
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0Q29sb3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyUmlnaHRDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyUmlnaHRTdHlsZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyUmlnaHRTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyUmlnaHRXaWR0aCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0V2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyUmlnaHRXaWR0aCkgfSB9LAogICAgeyAiYm9yZGVyU3BhY2luZyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlclNwYWNpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU3BhY2luZykg
fSB9LAogICAgeyAiYm9yZGVyU3RhcnRFbmRSYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJTdGFydEVuZFJhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydEVuZFJh
ZGl1cykgfSB9LAogICAgeyAiYm9yZGVyU3RhcnRTdGFydFJhZGl1cyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlclN0YXJ0U3RhcnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
U3RhcnRTdGFydFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyU3R5bGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdHlsZSkgfSB9
LAogICAgeyAiYm9yZGVyVG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcCkgfSB9LAogICAgeyAiYm9yZGVyVG9wQ29sb3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJUb3BDb2xvcikgfSB9LAogICAgeyAiYm9yZGVyVG9wTGVmdFJhZGl1cyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcExlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wTGVmdFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyVG9wUmlnaHRSYWRpdXMiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BSaWdodFJhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJUb3BSaWdodFJhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyVG9wU3R5bGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJUb3BTdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyVG9wV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJUb3BXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BXaWR0aCkg
fSB9LAogICAgeyAiYm9yZGVyV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJXaWR0aCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJXaWR0aCkgfSB9LAogICAgeyAiYm90dG9tIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYm90dG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvdHRvbSkg
fSB9LAogICAgeyAiYm94U2hhZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2hhZG93KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JveFNoYWRvdykgfSB9LAogICAgeyAiYm94U2l6aW5nIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNpemlu
ZykgfSB9LAogICAgeyAiYnJlYWtBZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0ZXIp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtBZnRlcikgfSB9LAogICAgeyAiYnJlYWtCZWZv
cmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0JlZm9yZSkgfSB9LAogICAgeyAiYnJlYWtJbnNpZGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0luc2lkZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSkgfSB9LAog
ICAgeyAiYnVmZmVyZWRSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRl
cmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZykgfSB9LAogICAg
eyAiY2FwdGlvblNpZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uU2lkZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jYXB0aW9uU2lkZSkgfSB9LAogICAgeyAiY2FyZXRDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2NhcmV0Q29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xv
cikgfSB9LAogICAgeyAiY2xlYXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGVhciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jbGVhcikgfSB9LAogICAgeyAiY2xpcCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2NsaXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcCkgfSB9LAogICAgeyAiY2xpcFBhdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUGF0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlw
UGF0aCkgfSB9LAogICAgeyAiY2xpcFJ1bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSkgfSB9LAogICAgeyAiY29sb3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcikgfSB9LAog
ICAgeyAiY29sb3JJbnRlcnBvbGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBv
bGF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbikgfSB9LAog
ICAgeyAiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9y
SW50ZXJwb2xhdGlvbkZpbHRlcnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycykgfSB9LAogICAgeyAiY29sb3JQcm9maWxlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sb3JQcm9maWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yUHJvZmlsZSkgfSB9
LAogICAgeyAiY29sb3JSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRlcmlu
ZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRlcmluZykgfSB9LAogICAgeyAiY29s
b3JTY2hlbWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclNjaGVtZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2xvclNjaGVtZSkgfSB9LAogICAgeyAiY29sdW1uQ291bnQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2x1bW5Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudCkg
fSB9LAogICAgeyAiY29sdW1uRmlsbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkZpbGwpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uRmlsbCkgfSB9LAogICAgeyAiY29sdW1uR2FwIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uR2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
bkdhcCkgfSB9LAogICAgeyAiY29sdW1uUnVsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1
bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZSkgfSB9LAogICAgeyAiY29sdW1u
UnVsZUNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZUNvbG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVDb2xvcikgfSB9LAogICAgeyAiY29sdW1uUnVsZVN0eWxl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVN0eWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbHVtblJ1bGVTdHlsZSkgfSB9LAogICAgeyAiY29sdW1uUnVsZVdpZHRoIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uUnVsZVdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
blJ1bGVXaWR0aCkgfSB9LAogICAgeyAiY29sdW1uU3BhbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtblNwYW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uU3BhbikgfSB9LAogICAgeyAi
Y29sdW1uV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5XaWR0aCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5XaWR0aCkgfSB9LAogICAgeyAiY29sdW1ucyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbHVtbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1ucykgfSB9LAogICAg
eyAiY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29udGVudCkgfSB9LAogICAgeyAiY291bnRlckluY3JlbWVudCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJJbmNyZW1lbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlcklu
Y3JlbWVudCkgfSB9LAogICAgeyAiY291bnRlclJlc2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291
bnRlclJlc2V0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJSZXNldCkgfSB9LAogICAg
eyAiY3Vyc29yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY3Vyc29yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2N1cnNvcikgfSB9LAogICAgeyAiY3giLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jeCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jeCkgfSB9LAogICAgeyAiY3kiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jeSkgfSB9LAogICAgeyAiZGlyZWN0aW9uIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RpcmVjdGlv
bikgfSB9LAogICAgeyAiZGlzcGxheSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rpc3BsYXkpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGlzcGxheSkgfSB9LAogICAgeyAiZG9taW5hbnRCYXNlbGluZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50QmFzZWxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZG9taW5hbnRCYXNlbGluZSkgfSB9LAogICAgeyAiZW1wdHlDZWxscyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2VtcHR5Q2VsbHMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlDZWxscykgfSB9
LAogICAgeyAiZW5hYmxlQmFja2dyb3VuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZUJhY2tn
cm91bmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlQmFja2dyb3VuZCkgfSB9LAogICAg
eyAiZmlsbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGwpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbCkgfSB9LAogICAgeyAiZmlsbE9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsT3Bh
Y2l0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsT3BhY2l0eSkgfSB9LAogICAgeyAiZmls
bFJ1bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9maWxsUnVsZSkgfSB9LAogICAgeyAiZmlsdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsdGVy
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbHRlcikgfSB9LAogICAgeyAiZmxleCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleCkgfSB9LAogICAg
eyAiZmxleEJhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEJhc2lzKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZsZXhCYXNpcykgfSB9LAogICAgeyAiZmxleERpcmVjdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZsZXhEaXJlY3Rpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERpcmVj
dGlvbikgfSB9LAogICAgeyAiZmxleEZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4Rmxvdyks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4RmxvdykgfSB9LAogICAgeyAiZmxleEdyb3ciLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbGV4R3JvdyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3Jv
dykgfSB9LAogICAgeyAiZmxleFNocmluayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhTaHJpbmsp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFNocmluaykgfSB9LAogICAgeyAiZmxleFdyYXAi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4V3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
V3JhcCkgfSB9LAogICAgeyAiZmxvYXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9hdCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbG9hdCkgfSB9LAogICAgeyAiZmxvb2RDb2xvciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Zsb29kQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RDb2xvcikg
fSB9LAogICAgeyAiZmxvb2RPcGFjaXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RPcGFjaXR5
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kT3BhY2l0eSkgfSB9LAogICAgeyAiZm9udCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udCkgfSB9
LAogICAgeyAiZm9udERpc3BsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RGlzcGxheSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RGlzcGxheSkgfSB9LAogICAgeyAiZm9udEZhbWlseSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGYW1pbHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dEZhbWlseSkgfSB9LAogICAgeyAiZm9udEZlYXR1cmVTZXR0aW5ncyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3MpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1
cmVTZXR0aW5ncykgfSB9LAogICAgeyAiZm9udEtlcm5pbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250S2VybmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250S2VybmluZykgfSB9LAogICAg
eyAiZm9udE9wdGljYWxTaXppbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemlu
ZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemluZykgfSB9LAogICAgeyAi
Zm9udFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250U2l6ZSkgfSB9LAogICAgeyAiZm9udFN0cmV0Y2giLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250U3RyZXRjaCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3RyZXRjaCkgfSB9LAog
ICAgeyAiZm9udFN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0eWxlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZvbnRTdHlsZSkgfSB9LAogICAgeyAiZm9udFN5bnRoZXNpcyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZvbnRTeW50aGVzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5
bnRoZXNpcykgfSB9LAogICAgeyAiZm9udFZhcmlhbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
VmFyaWFudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudCkgfSB9LAogICAgeyAi
Zm9udFZhcmlhbnRBbHRlcm5hdGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRBbHRl
cm5hdGVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50QWx0ZXJuYXRlcykgfSB9
LAogICAgeyAiZm9udFZhcmlhbnRDYXBzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRD
YXBzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50Q2FwcykgfSB9LAogICAgeyAi
Zm9udFZhcmlhbnRFYXN0QXNpYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RB
c2lhbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RBc2lhbikgfSB9LAog
ICAgeyAiZm9udFZhcmlhbnRMaWdhdHVyZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFu
dExpZ2F0dXJlcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudExpZ2F0dXJlcykg
fSB9LAogICAgeyAiZm9udFZhcmlhbnROdW1lcmljIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZh
cmlhbnROdW1lcmljKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TnVtZXJpYykg
fSB9LAogICAgeyAiZm9udFZhcmlhbnRQb3NpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRW
YXJpYW50UG9zaXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRQb3NpdGlv
bikgfSB9LAogICAgeyAiZm9udFZhcmlhdGlvblNldHRpbmdzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udFZhcmlhdGlvblNldHRpbmdzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYXRp
b25TZXR0aW5ncykgfSB9LAogICAgeyAiZm9udFdlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zv
bnRXZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFdlaWdodCkgfSB9LAogICAgeyAi
Z2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dhcCkg
fSB9LAogICAgeyAiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlw
aE9yaWVudGF0aW9uSG9yaXpvbnRhbCkgfSB9LAogICAgeyAiZ2x5cGhPcmllbnRhdGlvblZlcnRp
Y2FsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbCkgfSB9LAogICAgeyAiZ3Jp
ZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZCkg
fSB9LAogICAgeyAiZ3JpZEFyZWEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSkgfSB9LAogICAgeyAiZ3JpZEF1dG9Db2x1bW5zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1bW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRBdXRvQ29sdW1ucykgfSB9LAogICAgeyAiZ3JpZEF1dG9GbG93Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZEF1dG9GbG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvRmxvdykg
fSB9LAogICAgeyAiZ3JpZEF1dG9Sb3dzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Sb3dz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93cykgfSB9LAogICAgeyAiZ3JpZENv
bHVtbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW4pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZENvbHVtbikgfSB9LAogICAgeyAiZ3JpZENvbHVtbkVuZCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRDb2x1bW5FbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkVuZCkg
fSB9LAogICAgeyAiZ3JpZENvbHVtbkdhcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5H
YXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkdhcCkgfSB9LAogICAgeyAiZ3Jp
ZENvbHVtblN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtblN0YXJ0KSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5TdGFydCkgfSB9LAogICAgeyAiZ3JpZEdhcCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRHYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEdhcCkg
fSB9LAogICAgeyAiZ3JpZFJvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3cpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFJvdykgfSB9LAogICAgeyAiZ3JpZFJvd0VuZCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRSb3dFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZCkg
fSB9LAogICAgeyAiZ3JpZFJvd0dhcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dHYXApLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0dhcCkgfSB9LAogICAgeyAiZ3JpZFJvd1N0YXJ0
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRSb3dTdGFydCkgfSB9LAogICAgeyAiZ3JpZFRlbXBsYXRlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZFRlbXBsYXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZSkgfSB9
LAogICAgeyAiZ3JpZFRlbXBsYXRlQXJlYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxh
dGVBcmVhcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhcykgfSB9LAog
ICAgeyAiZ3JpZFRlbXBsYXRlQ29sdW1ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0
ZUNvbHVtbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQ29sdW1ucykgfSB9
LAogICAgeyAiZ3JpZFRlbXBsYXRlUm93cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0
ZVJvd3MpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlUm93cykgfSB9LAogICAg
eyAiaGFuZ2luZ1B1bmN0dWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ1B1bmN0dWF0
aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2hhbmdpbmdQdW5jdHVhdGlvbikgfSB9LAogICAg
eyAiaGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25faGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2hlaWdodCkgfSB9LAogICAgeyAiaW1hZ2VPcmllbnRhdGlvbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ltYWdlT3JpZW50YXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VPcmllbnRh
dGlvbikgfSB9LAogICAgeyAiaW1hZ2VSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFn
ZVJlbmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZVJlbmRlcmluZykgfSB9LAog
ICAgeyAiaW5saW5lU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25faW5saW5lU2l6ZSkgfSB9LAogICAgeyAiaW5zZXQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldCkgfSB9LAogICAgeyAi
aW5zZXRCbG9jayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2spLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25faW5zZXRCbG9jaykgfSB9LAogICAgeyAiaW5zZXRCbG9ja0VuZCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2luc2V0QmxvY2tFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRCbG9j
a0VuZCkgfSB9LAogICAgeyAiaW5zZXRCbG9ja1N0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRCbG9ja1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFydCkgfSB9
LAogICAgeyAiaW5zZXRJbmxpbmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZSkgfSB9LAogICAgeyAiaW5zZXRJbmxpbmVF
bmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZUVuZCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9pbnNldElubGluZUVuZCkgfSB9LAogICAgeyAiaW5zZXRJbmxpbmVTdGFydCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRJbmxpbmVTdGFydCkgfSB9LAogICAgeyAiaXNvbGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
aXNvbGF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvbikgfSB9LAogICAgeyAi
anVzdGlmeUNvbnRlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5Q29udGVudCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5Q29udGVudCkgfSB9LAogICAgeyAianVzdGlmeUl0ZW1z
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeUl0ZW1zKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2p1c3RpZnlJdGVtcykgfSB9LAogICAgeyAianVzdGlmeVNlbGYiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9qdXN0aWZ5U2VsZiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5U2VsZikgfSB9LAog
ICAgeyAia2VybmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2tlcm5pbmcpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fa2VybmluZykgfSB9LAogICAgeyAibGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2xl
ZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGVmdCkgfSB9LAogICAgeyAibGV0dGVyU3BhY2lu
ZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRlclNwYWNpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbGV0dGVyU3BhY2luZykgfSB9LAogICAgeyAibGlnaHRpbmdDb2xvciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpZ2h0aW5nQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdDb2xv
cikgfSB9LAogICAgeyAibGluZUJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUJyZWFrKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVhaykgfSB9LAogICAgeyAibGluZUhlaWdodCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2xpbmVIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlu
ZUhlaWdodCkgfSB9LAogICAgeyAibGlzdFN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0
eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZSkgfSB9LAogICAgeyAibGlzdFN0
eWxlSW1hZ2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZSkgfSB9LAogICAgeyAibGlzdFN0eWxlUG9zaXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVQb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9saXN0U3R5bGVQb3NpdGlvbikgfSB9LAogICAgeyAibGlzdFN0eWxlVHlwZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2xpc3RTdHlsZVR5cGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0
eWxlVHlwZSkgfSB9LAogICAgeyAibWFyZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbikgfSB9LAogICAgeyAibWFyZ2luQmxvY2siLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5CbG9jaykgfSB9LAogICAgeyAibWFyZ2luQmxvY2tFbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5CbG9ja0VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCkgfSB9
LAogICAgeyAibWFyZ2luQmxvY2tTdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJsb2Nr
U3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2tTdGFydCkgfSB9LAogICAg
eyAibWFyZ2luQm90dG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQm90dG9tKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX21hcmdpbkJvdHRvbSkgfSB9LAogICAgeyAibWFyZ2luSW5saW5lIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbklubGluZSkgfSB9LAogICAgeyAibWFyZ2luSW5saW5lRW5kIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luSW5saW5lRW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZUVu
ZCkgfSB9LAogICAgeyAibWFyZ2luSW5saW5lU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5JbmxpbmVTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFydCkg
fSB9LAogICAgeyAibWFyZ2luTGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkxlZnQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luTGVmdCkgfSB9LAogICAgeyAibWFyZ2luUmlnaHQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
YXJnaW5SaWdodCkgfSB9LAogICAgeyAibWFyZ2luVG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
Z2luVG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblRvcCkgfSB9LAogICAgeyAibWFy
a2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlcikgfSB9LAogICAgeyAibWFya2VyRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyRW5k
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlckVuZCkgfSB9LAogICAgeyAibWFya2VyTWlk
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyTWlkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlck1pZCkgfSB9LAogICAgeyAibWFya2VyU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJTdGFydCkgfSB9LAogICAgeyAi
bWFzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFz
aykgfSB9LAogICAgeyAibWFza1R5cGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrVHlwZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrVHlwZSkgfSB9LAogICAgeyAibWF0aFN0eWxlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWF0aFN0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hdGhTdHls
ZSkgfSB9LAogICAgeyAibWF4QmxvY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4QmxvY2tT
aXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJsb2NrU2l6ZSkgfSB9LAogICAgeyAibWF4
SGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21heEhlaWdodCkgfSB9LAogICAgeyAibWF4SW5saW5lU2l6ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX21heElubGluZVNpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SW5saW5lU2l6ZSkg
fSB9LAogICAgeyAibWF4V2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aCkgfSB9LAogICAgeyAibWluQmxvY2tTaXplIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWluQmxvY2tTaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkJs
b2NrU2l6ZSkgfSB9LAogICAgeyAibWluSGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSGVp
Z2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkhlaWdodCkgfSB9LAogICAgeyAibWluSW5s
aW5lU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21pbklubGluZVNpemUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWluSW5saW5lU2l6ZSkgfSB9LAogICAgeyAibWluV2lkdGgiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9taW5XaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5XaWR0aCkgfSB9LAog
ICAgeyAibWl4QmxlbmRNb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4QmxlbmRNb2RlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZSkgfSB9LAogICAgeyAib2JqZWN0Rml0Iiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0Rml0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVj
dEZpdCkgfSB9LAogICAgeyAib2JqZWN0UG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmpl
Y3RQb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RQb3NpdGlvbikgfSB9LAog
ICAgeyAib3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX29wYWNpdHkpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fb3BhY2l0eSkgfSB9LAogICAgeyAib3JkZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
cmRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcmRlcikgfSB9LAogICAgeyAib3JwaGFucyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX29ycGhhbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFu
cykgfSB9LAogICAgeyAib3V0bGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZSkgfSB9LAogICAgeyAib3V0bGluZUNvbG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3V0bGluZUNvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxp
bmVDb2xvcikgfSB9LAogICAgeyAib3V0bGluZU9mZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291
dGxpbmVPZmZzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZU9mZnNldCkgfSB9LAog
ICAgeyAib3V0bGluZVN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVN0eWxlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVTdHlsZSkgfSB9LAogICAgeyAib3V0bGluZVdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X291dGxpbmVXaWR0aCkgfSB9LAogICAgeyAib3ZlcmZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dmVyZmxvdyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvdykgfSB9LAogICAgeyAib3Zl
cmZsb3dXcmFwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dXcmFwKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJmbG93V3JhcCkgfSB9LAogICAgeyAib3ZlcmZsb3dYIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fb3ZlcmZsb3dYKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WCkgfSB9
LAogICAgeyAib3ZlcmZsb3dZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dZKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX292ZXJmbG93WSkgfSB9LAogICAgeyAib3ZlcnNjcm9sbEJlaGF2aW9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvcikgfSB9LAogICAgeyAib3ZlcnNjcm9sbEJlaGF2aW9y
WCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvclgpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWCkgfSB9LAogICAgeyAib3ZlcnNjcm9sbEJlaGF2
aW9yWSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvclkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWSkgfSB9LAogICAgeyAicGFkZGluZyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZGRpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZykg
fSB9LAogICAgeyAicGFkZGluZ0Jsb2NrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2Nr
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9jaykgfSB9LAogICAgeyAicGFkZGlu
Z0Jsb2NrRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrRW5kKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja0VuZCkgfSB9LAogICAgeyAicGFkZGluZ0Jsb2NrU3Rh
cnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydCkgfSB9LAogICAgeyAicGFkZGluZ0JvdHRvbSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCb3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ0JvdHRvbSkgfSB9LAogICAgeyAicGFkZGluZ0lubGluZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdJbmxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZSkgfSB9
LAogICAgeyAicGFkZGluZ0lubGluZUVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxp
bmVFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZUVuZCkgfSB9LAogICAg
eyAicGFkZGluZ0lubGluZVN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVN0
YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVTdGFydCkgfSB9LAogICAg
eyAicGFkZGluZ0xlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nTGVmdCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nTGVmdCkgfSB9LAogICAgeyAicGFkZGluZ1JpZ2h0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdSaWdodCkgfSB9LAogICAgeyAicGFkZGluZ1RvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdUb3ApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcCkgfSB9LAogICAgeyAicGFn
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZSkg
fSB9LAogICAgeyAicGFnZUJyZWFrQWZ0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtB
ZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtBZnRlcikgfSB9LAogICAgeyAi
cGFnZUJyZWFrQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQmVmb3JlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0JlZm9yZSkgfSB9LAogICAgeyAicGFnZUJyZWFr
SW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5zaWRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2VCcmVha0luc2lkZSkgfSB9LAogICAgeyAicGFpbnRPcmRlciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhaW50T3JkZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFpbnRPcmRl
cikgfSB9LAogICAgeyAicGVyc3BlY3RpdmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZSkgfSB9LAogICAgeyAicGVyc3Bl
Y3RpdmVPcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbiksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbikgfSB9LAogICAgeyAicGVyc3BlY3Rp
dmVPcmlnaW5YIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5YKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWCkgfSB9LAogICAgeyAicGVyc3BlY3Rp
dmVPcmlnaW5ZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5ZKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWSkgfSB9LAogICAgeyAicGxhY2VDb250
ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VDb250ZW50KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BsYWNlQ29udGVudCkgfSB9LAogICAgeyAicGxhY2VJdGVtcyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BsYWNlSXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtcykgfSB9LAog
ICAgeyAicGxhY2VTZWxmIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VTZWxmKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BsYWNlU2VsZikgfSB9LAogICAgeyAicG9pbnRlckV2ZW50cyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3BvaW50ZXJFdmVudHMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcG9pbnRl
ckV2ZW50cykgfSB9LAogICAgeyAicG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb3NpdGlv
biksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb3NpdGlvbikgfSB9LAogICAgeyAicXVvdGVzIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fcXVvdGVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3F1b3Rlcykg
fSB9LAogICAgeyAiciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcikgfSB9LAogICAgeyAicmVzaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcmVzaXplKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Jlc2l6ZSkgfSB9LAogICAgeyAicmlnaHQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9yaWdodCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yaWdodCkgfSB9LAogICAgeyAi
cm90YXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3JvdGF0ZSkgfSB9LAogICAgeyAicm93R2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcm93R2FwKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcCkgfSB9LAogICAgeyAicngiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9yeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeCkgfSB9LAogICAgeyAicnkiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9yeSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeSkgfSB9LAogICAg
eyAic2NhbGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY2FsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY2FsZSkgfSB9LAogICAgeyAic2Nyb2xsQmVoYXZpb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxCZWhhdmlvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxCZWhhdmlvcikgfSB9
LAogICAgeyAic2Nyb2xsTWFyZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbikgfSB9LAogICAgeyAic2Nyb2xsTWFy
Z2luQmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jayksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jaykgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2lu
QmxvY2tFbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZCkgfSB9LAogICAgeyAic2Nyb2xs
TWFyZ2luQmxvY2tTdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3Rh
cnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tTdGFydCkgfSB9LAog
ICAgeyAic2Nyb2xsTWFyZ2luQm90dG9tIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2lu
Qm90dG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJvdHRvbSkgfSB9LAog
ICAgeyAic2Nyb2xsTWFyZ2luSW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2lu
SW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZSkgfSB9LAog
ICAgeyAic2Nyb2xsTWFyZ2luSW5saW5lRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFy
Z2luSW5saW5lRW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZUVu
ZCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luSW5saW5lU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxNYXJnaW5JbmxpbmVTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxN
YXJnaW5JbmxpbmVTdGFydCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luTGVmdCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luTGVmdCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luUmlnaHQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxNYXJnaW5SaWdodCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJn
aW5SaWdodCkgfSB9LAogICAgeyAic2Nyb2xsTWFyZ2luVG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsTWFyZ2luVG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRvcCkg
fSB9LAogICAgeyAic2Nyb2xsUGFkZGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRp
bmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZykgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ0Jsb2NrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2NrKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9jaykgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ0Jsb2NrRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2Nr
RW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja0VuZCkgfSB9LAog
ICAgeyAic2Nyb2xsUGFkZGluZ0Jsb2NrU3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQ
YWRkaW5nQmxvY2tTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxv
Y2tTdGFydCkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0JvdHRvbSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbFBhZGRpbmdCb3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFk
ZGluZ0JvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0lubGluZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
UGFkZGluZ0lubGluZSkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0lubGluZUVuZCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZ0lubGluZUVuZCkgfSB9LAogICAgeyAic2Nyb2xsUGFkZGluZ0lubGlu
ZVN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVTdGFydCkgfSB9LAogICAgeyAi
c2Nyb2xsUGFkZGluZ0xlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nTGVmdCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nTGVmdCkgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ1JpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ1JpZ2h0KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdSaWdodCkgfSB9LAogICAgeyAic2Ny
b2xsUGFkZGluZ1RvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdUb3ApLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ1RvcCkgfSB9LAogICAgeyAic2Nyb2xsU25h
cEFsaWduIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcEFsaWduKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbFNuYXBBbGlnbikgfSB9LAogICAgeyAic2Nyb2xsU25hcE1hcmdpbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsU25hcE1hcmdpbikgfSB9LAogICAgeyAic2Nyb2xsU25hcE1hcmdpbkJvdHRvbSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0b20pLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkJvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsU25hcE1h
cmdpbkxlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCkgfSB9LAogICAgeyAic2Nyb2xs
U25hcE1hcmdpblJpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5SaWdodCkgfSB9LAogICAg
eyAic2Nyb2xsU25hcE1hcmdpblRvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJn
aW5Ub3ApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcCkgfSB9LAog
ICAgeyAic2Nyb2xsU25hcFN0b3AiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcCkgfSB9LAogICAgeyAic2Nyb2xs
U25hcFR5cGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlwZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwVHlwZSkgfSB9LAogICAgeyAic2hhcGVJbWFnZVRocmVzaG9s
ZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2hhcGVJbWFnZVRocmVzaG9sZCkgfSB9LAogICAgeyAic2hhcGVNYXJnaW4iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zaGFwZU1hcmdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFw
ZU1hcmdpbikgfSB9LAogICAgeyAic2hhcGVPdXRzaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hh
cGVPdXRzaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlT3V0c2lkZSkgfSB9LAogICAg
eyAic2hhcGVSZW5kZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmluZyksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmluZykgfSB9LAogICAgeyAic2l6ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2l6ZSkgfSB9LAog
ICAgeyAic3BlYWtBcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrQXMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc3BlYWtBcykgfSB9LAogICAgeyAic3JjIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Jj
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NyYykgfSB9LAogICAgeyAic3RvcENvbG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc3RvcENvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BDb2xv
cikgfSB9LAogICAgeyAic3RvcE9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wT3BhY2l0eSkgfSB9LAogICAgeyAic3Ryb2tl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9r
ZSkgfSB9LAogICAgeyAic3Ryb2tlQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvcikgfSB9LAogICAgeyAic3Ryb2tl
RGFzaGFycmF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaGFycmF5KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3N0cm9rZURhc2hhcnJheSkgfSB9LAogICAgeyAic3Ryb2tlRGFzaG9mZnNl
dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hvZmZzZXQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlRGFzaG9mZnNldCkgfSB9LAogICAgeyAic3Ryb2tlTGluZWNhcCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVjYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
TGluZWNhcCkgfSB9LAogICAgeyAic3Ryb2tlTGluZWpvaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VMaW5lam9pbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VMaW5lam9pbikgfSB9
LAogICAgeyAic3Ryb2tlTWl0ZXJsaW1pdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVy
bGltaXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTWl0ZXJsaW1pdCkgfSB9LAogICAg
eyAic3Ryb2tlT3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNpdHkpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlT3BhY2l0eSkgfSB9LAogICAgeyAic3Ryb2tlV2lkdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VXaWR0aCkgfSB9LAogICAgeyAic3VwcG9ydGVkQ29sb3JTY2hlbWVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3VwcG9ydGVkQ29sb3JTY2hlbWVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1
cHBvcnRlZENvbG9yU2NoZW1lcykgfSB9LAogICAgeyAidGFiU2l6ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3RhYlNpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGFiU2l6ZSkgfSB9LAogICAgeyAi
dGFibGVMYXlvdXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90YWJsZUxheW91dCkgfSB9LAogICAgeyAidGV4dEFsaWduIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdGV4dEFsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbGlnbikgfSB9
LAogICAgeyAidGV4dEFuY2hvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbmNob3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dEFuY2hvcikgfSB9LAogICAgeyAidGV4dERlY29yYXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0RGVjb3JhdGlvbikgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25Db2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dERlY29yYXRpb25Db2xvcikgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25MaW5lIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25MaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uTGluZSkgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25Ta2lwIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Ta2lwKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uU2tpcCkgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25TdHlsZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dERlY29yYXRpb25TdHlsZSkgfSB9LAogICAgeyAidGV4dERlY29yYXRpb25UaGlja25l
c3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykgfSB9LAogICAgeyAidGV4dEVt
cGhhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRFbXBoYXNpcykgfSB9LAogICAgeyAidGV4dEVtcGhhc2lzQ29sb3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAidGV4dEVtcGhhc2lzUG9zaXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNQb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0RW1waGFzaXNQb3NpdGlvbikgfSB9LAogICAgeyAidGV4dEVtcGhhc2lzU3R5bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAidGV4dEluZGVudCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRJbmRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEluZGVudCkgfSB9
LAogICAgeyAidGV4dE9yaWVudGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE9yaWVudGF0
aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAi
dGV4dE92ZXJmbG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE92ZXJmbG93KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvdykgfSB9LAogICAgeyAidGV4dFJlbmRlcmluZyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dFJlbmRlcmluZykgfSB9LAogICAgeyAidGV4dFNoYWRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRTaGFkb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFNoYWRvdykgfSB9LAogICAgeyAi
dGV4dFRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRUcmFuc2Zvcm0pLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybSkgfSB9LAogICAgeyAidGV4dFVuZGVybGluZU9m
ZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVPZmZzZXQpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dFVuZGVybGluZU9mZnNldCkgfSB9LAogICAgeyAidGV4dFVuZGVybGlu
ZVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFVuZGVybGluZVBvc2l0aW9uKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVQb3NpdGlvbikgfSB9LAogICAgeyAidG9w
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvcCkgfSB9
LAogICAgeyAidG91Y2hBY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaEFjdGlvbiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaEFjdGlvbikgfSB9LAogICAgeyAidHJhbnNmb3JtIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
Zm9ybSkgfSB9LAogICAgeyAidHJhbnNmb3JtQm94Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtQm94KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUJveCkgfSB9LAogICAgeyAi
dHJhbnNmb3JtT3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpbikgfSB9LAogICAgeyAidHJhbnNmb3Jt
T3JpZ2luWCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblgpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWCkgfSB9LAogICAgeyAidHJhbnNmb3JtT3JpZ2lu
WSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNmb3JtT3JpZ2luWSkgfSB9LAogICAgeyAidHJhbnNmb3JtT3JpZ2luWiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNmb3JtT3JpZ2luWikgfSB9LAogICAgeyAidHJhbnNmb3JtU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1TdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1T
dHlsZSkgfSB9LAogICAgeyAidHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRp
b24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbikgfSB9LAogICAgeyAidHJhbnNp
dGlvbkRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EZWxheSkgfSB9LAogICAgeyAidHJhbnNpdGlvbkR1cmF0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkR1cmF0aW9uKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zaXRpb25EdXJhdGlvbikgfSB9LAogICAgeyAidHJhbnNpdGlvblByb3Bl
cnR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblByb3BlcnR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zaXRpb25Qcm9wZXJ0eSkgfSB9LAogICAgeyAidHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbikgfSB9LAogICAg
eyAidHJhbnNsYXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNsYXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zbGF0ZSkgfSB9LAogICAgeyAidW5pY29kZUJpZGkiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl91bmljb2RlQmlkaSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlQmlkaSkg
fSB9LAogICAgeyAidW5pY29kZVJhbmdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZVJhbmdl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVSYW5nZSkgfSB9LAogICAgeyAidmVjdG9y
RWZmZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZmZWN0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3ZlY3RvckVmZmVjdCkgfSB9LAogICAgeyAidmVydGljYWxBbGlnbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3ZlcnRpY2FsQWxpZ24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxB
bGlnbikgfSB9LAogICAgeyAidmlzaWJpbGl0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxp
dHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmlzaWJpbGl0eSkgfSB9LAogICAgeyAid2hpdGVT
cGFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlU3BhY2UpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2hpdGVTcGFjZSkgfSB9LAogICAgeyAid2lkb3dzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lk
b3dzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dpZG93cykgfSB9LAogICAgeyAid2lkdGgiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWR0aCkgfSB9
LAogICAgeyAid2lsbENoYW5nZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxDaGFuZ2UpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2lsbENoYW5nZSkgfSB9LAogICAgeyAid29yZEJyZWFrIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd29yZEJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVh
aykgfSB9LAogICAgeyAid29yZFNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkU3BhY2lu
ZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkU3BhY2luZykgfSB9LAogICAgeyAid29yZFdy
YXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkV3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
b3JkV3JhcCkgfSB9LAogICAgeyAid3JpdGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0
aW5nTW9kZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0aW5nTW9kZSkgfSB9LAogICAgeyAi
eCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3gpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feCkgfSB9LAog
ICAgeyAieSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3kpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feSkg
fSB9LAogICAgeyAiekluZGV4Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fekluZGV4KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3pJbmRleCkgfSB9LAogICAgeyAiem9vbSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3pvb20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fem9vbSkgfSB9LAogICAgeyAid2Via2l0QWxp
Z25Db250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50KSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduQ29udGVudCkgfSB9LAogICAgeyAid2Via2l0QWxp
Z25JdGVtcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXMpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0QWxpZ25JdGVtcykgfSB9LAogICAgeyAid2Via2l0QWxpZ25TZWxm
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFsaWduU2VsZikgfSB9LAogICAgeyAid2Via2l0QWx0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0QWx0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsdCkgfSB9LAog
ICAgeyAid2Via2l0QW5pbWF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9u
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbikgfSB9LAogICAgeyAid2Vi
a2l0QW5pbWF0aW9uRGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EZWxh
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EZWxheSkgfSB9LAogICAg
eyAid2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkRp
cmVjdGlvbikgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRBbmltYXRpb25EdXJhdGlvbikgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uRmlsbE1v
ZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9kZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9kZSkgfSB9LAogICAgeyAid2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudCkgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uTmFtZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbk5hbWUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uTmFtZSkgfSB9LAogICAgeyAid2Via2l0QW5pbWF0aW9uUGxheVN0YXRlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSkgfSB9LAogICAgeyAid2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25UaW1p
bmdGdW5jdGlvbikgfSB9LAogICAgeyAid2Via2l0QXBwZWFyYW5jZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFwcGVhcmFuY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFy
YW5jZSkgfSB9LAogICAgeyAid2Via2l0QmFja2Ryb3BGaWx0ZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZHJvcEZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNr
ZHJvcEZpbHRlcikgfSB9LAogICAgeyAid2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSkgfSB9LAogICAgeyAid2Via2l0QmFja2dyb3Vu
ZENsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCkgfSB9LAogICAgeyAid2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRDb21w
b3NpdGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkg
fSB9LAogICAgeyAid2Via2l0QmFja2dyb3VuZE9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJhY2tncm91bmRPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dy
b3VuZE9yaWdpbikgfSB9LAogICAgeyAid2Via2l0QmFja2dyb3VuZFNpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCYWNrZ3JvdW5kU2l6ZSkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQWZ0ZXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJBZnRlcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQWZ0ZXJT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyU3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyV2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkgfSB9LAog
ICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
QmVmb3JlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZSkgfSB9LAog
ICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJCZWZvcmVDb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZv
cmVDb2xvcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQmVmb3JlV2lk
dGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQm90dG9t
TGVmdFJhZGl1cykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cykgfSB9LAogICAgeyAi
d2Via2l0Qm9yZGVyRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZCkgfSB9LAogICAgeyAid2Via2l0Qm9y
ZGVyRW5kQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRDb2xvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRDb2xvcikgfSB9LAogICAgeyAid2Vi
a2l0Qm9yZGVyRW5kU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSkgfSB9LAogICAg
eyAid2Via2l0Qm9yZGVyRW5kV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJF
bmRXaWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aCkgfSB9
LAogICAgeyAid2Via2l0Qm9yZGVyRml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
Rml0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckZpdCkgfSB9LAogICAgeyAi
d2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVySW1hZ2UiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJJbWFnZSkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyUmFkaXVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyUmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlclJhZGl1cykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyU3RhcnQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJTdGFydCkgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyU3RhcnRDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0Q29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Qm9yZGVyU3RhcnRDb2xvcikgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyU3RhcnRT
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0U3R5bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyU3RhcnRXaWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0V2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRXaWR0aCkgfSB9LAog
ICAgeyAid2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclRvcExlZnRSYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
VG9wTGVmdFJhZGl1cykgfSB9LAogICAgeyAid2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cykgfSB9LAogICAgeyAid2Via2l0
Qm9yZGVyVmVydGljYWxTcGFjaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZykgfSB9LAogICAgeyAid2Via2l0Qm94QWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3hBbGlnbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hBbGlnbikgfSB9
LAogICAgeyAid2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveERl
Y29yYXRpb25CcmVhaykgfSB9LAogICAgeyAid2Via2l0Qm94RGlyZWN0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94RGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJveERpcmVjdGlvbikgfSB9LAogICAgeyAid2Via2l0Qm94RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJveEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleCkg
fSB9LAogICAgeyAid2Via2l0Qm94RmxleEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm94RmxleEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhHcm91cCkg
fSB9LAogICAgeyAid2Via2l0Qm94TGluZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hM
aW5lcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hMaW5lcykgfSB9LAogICAgeyAi
d2Via2l0Qm94T3JkaW5hbEdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JkaW5h
bEdyb3VwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yZGluYWxHcm91cCkgfSB9
LAogICAgeyAid2Via2l0Qm94T3JpZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3Jp
ZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yaWVudCkgfSB9LAogICAgeyAi
d2Via2l0Qm94UGFjayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFBhY2spLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UGFjaykgfSB9LAogICAgeyAid2Via2l0Qm94UmVmbGVj
dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFJlZmxlY3QpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94UmVmbGVjdCkgfSB9LAogICAgeyAid2Via2l0Qm94U2hhZG93Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2hhZG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJveFNoYWRvdykgfSB9LAogICAgeyAid2Via2l0Qm94U2l6aW5nIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94U2l6aW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNp
emluZykgfSB9LAogICAgeyAid2Via2l0Q2xpcFBhdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRDbGlwUGF0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aCkgfSB9LAog
ICAgeyAid2Via2l0Q29sdW1uQXhpcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4
aXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQXhpcykgfSB9LAogICAgeyAi
d2Via2l0Q29sdW1uQnJlYWtBZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJy
ZWFrQWZ0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRlcikg
fSB9LAogICAgeyAid2Via2l0Q29sdW1uQnJlYWtCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5CcmVha0JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1
bW5CcmVha0JlZm9yZSkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uQnJlYWtJbnNpZGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0luc2lkZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5CcmVha0luc2lkZSkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uQ291
bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5Db3VudCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRDb2x1bW5Db3VudCkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uRmlsbCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkZpbGwpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uRmlsbCkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uR2FwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uR2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtbkdhcCkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5Qcm9ncmVzc2lvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUnVsZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUnVsZSkgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUnVsZUNvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZUNvbG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdENvbHVtblJ1bGVDb2xvcikgfSB9LAogICAgeyAid2Via2l0Q29sdW1uUnVs
ZVN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZVN0eWxlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHlsZSkgfSB9LAogICAgeyAid2Via2l0
Q29sdW1uUnVsZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVXaWR0aCkgfSB9LAogICAg
eyAid2Via2l0Q29sdW1uU3BhbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblNwYW4p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uU3BhbikgfSB9LAogICAgeyAid2Vi
a2l0Q29sdW1uV2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5XaWR0aCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5XaWR0aCkgfSB9LAogICAgeyAid2Via2l0
Q29sdW1ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbnMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Q29sdW1ucykgfSB9LAogICAgeyAid2Via2l0Q3Vyc29yVmlzaWJpbGl0
eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEN1cnNvclZpc2liaWxpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJpbGl0eSkgfSB9LAogICAgeyAid2Via2l0Rmls
dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmlsdGVyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEZpbHRlcikgfSB9LAogICAgeyAid2Via2l0RmxleCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleCkgfSB9LAog
ICAgeyAid2Via2l0RmxleEJhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleEJhc2lz
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhCYXNpcykgfSB9LAogICAgeyAid2Vi
a2l0RmxleERpcmVjdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleERpcmVjdGlvbikgfSB9LAogICAgeyAi
d2Via2l0RmxleEZsb3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4RmxvdyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4RmxvdykgfSB9LAogICAgeyAid2Via2l0RmxleEdy
b3ciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4R3JvdyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRGbGV4R3JvdykgfSB9LAogICAgeyAid2Via2l0RmxleFNocmluayIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTaHJpbmspLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0RmxleFNocmluaykgfSB9LAogICAgeyAid2Via2l0RmxleFdyYXAiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRGbGV4V3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4V3Jh
cCkgfSB9LAogICAgeyAid2Via2l0Rm9udEtlcm5pbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRGb250S2VybmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2VybmluZykg
fSB9LAogICAgeyAid2Via2l0Rm9udFNtb290aGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEZvbnRTbW9vdGhpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udFNtb290aGlu
ZykgfSB9LAogICAgeyAid2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEh5cGhlbmF0ZUNoYXJhY3RlcikgfSB9LAogICAgeyAid2Via2l0SHlwaGVuYXRlTGltaXRBZnRl
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikgfSB9LAogICAgeyAid2Vi
a2l0SHlwaGVuYXRlTGltaXRCZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5h
dGVMaW1pdEJlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1p
dEJlZm9yZSkgfSB9LAogICAgeyAid2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcykgfSB9LAogICAgeyAid2Via2l0SHlwaGVucyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0SHlwaGVucykgfSB9LAogICAgeyAid2Via2l0SW5pdGlhbExldHRlciIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEluaXRpYWxMZXR0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0SW5pdGlhbExldHRlcikgfSB9LAogICAgeyAid2Via2l0SnVzdGlmeUNvbnRlbnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5Q29udGVudCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRKdXN0aWZ5Q29udGVudCkgfSB9LAogICAgeyAid2Via2l0SnVzdGlmeUl0ZW1zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUl0ZW1zKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEp1c3RpZnlJdGVtcykgfSB9LAogICAgeyAid2Via2l0TGluZUFsaWduIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUFsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdExpbmVBbGlnbikgfSB9LAogICAgeyAid2Via2l0TGluZUJveENvbnRhaW4iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMaW5lQm94Q29udGFpbikgfSB9LAogICAgeyAid2Via2l0TGluZUJyZWFrIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dExpbmVCcmVhaykgfSB9LAogICAgeyAid2Via2l0TGluZUNsYW1wIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TGluZUNsYW1wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVDbGFt
cCkgfSB9LAogICAgeyAid2Via2l0TGluZUdyaWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRM
aW5lR3JpZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lR3JpZCkgfSB9LAogICAg
eyAid2Via2l0TGluZVNuYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcCkgfSB9LAogICAgeyAid2Via2l0TG9j
YWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9jYWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdExvY2FsZSkgfSB9LAogICAgeyAid2Via2l0TG9naWNhbEhlaWdodCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAid2Via2l0TG9naWNhbFdpZHRoIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQWZ0ZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXJnaW5BZnRlcikgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0
TWFyZ2luQmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZSkgfSB9LAogICAgeyAid2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luQ29s
bGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0TWFy
Z2luRW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luRW5kKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1hcmdpbkVuZCkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luU3RhcnQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5TdGFydCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXJnaW5TdGFydCkgfSB9LAogICAgeyAid2Via2l0TWFyZ2luVG9wQ29sbGFw
c2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSkgfSB9LAogICAgeyAid2Via2l0
TWFzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2spLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFzaykgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hc2tCb3hJbWFnZSkgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdlT3V0c2V0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlT3V0c2V0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZU91dHNldCkgfSB9LAogICAgeyAid2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlUmVwZWF0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCkgfSB9LAog
ICAgeyAid2Via2l0TWFza0JveEltYWdlU2xpY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRN
YXNrQm94SW1hZ2VTbGljZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1h
Z2VTbGljZSkgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdlU291cmNlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291cmNlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSkgfSB9LAogICAgeyAid2Via2l0TWFza0JveEltYWdl
V2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCkgfSB9LAogICAgeyAid2Vi
a2l0TWFza0NsaXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ2xpcCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ2xpcCkgfSB9LAogICAgeyAid2Via2l0TWFza0NvbXBv
c2l0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza0NvbXBvc2l0ZSkgfSB9LAogICAgeyAid2Via2l0TWFza0lt
YWdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0ltYWdlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tJbWFnZSkgfSB9LAogICAgeyAid2Via2l0TWFza09yaWdpbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tPcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza09yaWdpbikgfSB9LAogICAgeyAid2Via2l0TWFza1Bvc2l0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tQb3NpdGlvbikgfSB9LAogICAgeyAid2Via2l0TWFza1Bvc2l0aW9uWCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza1Bvc2l0aW9uWCkgfSB9LAogICAgeyAid2Via2l0TWFza1Bvc2l0aW9uWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvblkpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza1Bvc2l0aW9uWSkgfSB9LAogICAgeyAid2Via2l0TWFza1JlcGVhdCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tSZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza1JlcGVhdCkgfSB9LAogICAgeyAid2Via2l0TWFza1NpemUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrU2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
U2l6ZSkgfSB9LAogICAgeyAid2Via2l0TWFza1NvdXJjZVR5cGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXNrU291cmNlVHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
U291cmNlVHlwZSkgfSB9LAogICAgeyAid2Via2l0TWF4TG9naWNhbEhlaWdodCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWF4TG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAid2Via2l0TWF4TG9naWNhbFdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbFdpZHRoKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxXaWR0aCkgfSB9LAogICAgeyAid2Via2l0TWluTG9n
aWNhbEhlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbEhlaWdodCkgfSB9LAogICAgeyAi
d2Via2l0TWluTG9naWNhbFdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNh
bFdpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxXaWR0aCkgfSB9
LAogICAgeyAid2Via2l0TmJzcE1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9k
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9kZSkgfSB9LAogICAgeyAid2Vi
a2l0T3BhY2l0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE9wYWNpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0T3BhY2l0eSkgfSB9LAogICAgeyAid2Via2l0T3JkZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRP
cmRlcikgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ0FmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGFkZGluZ0FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdB
ZnRlcikgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ0JlZm9yZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFBhZGRpbmdCZWZvcmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGlu
Z0JlZm9yZSkgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ0VuZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFBhZGRpbmdFbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0Vu
ZCkgfSB9LAogICAgeyAid2Via2l0UGFkZGluZ1N0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0UGFkZGluZ1N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdTdGFy
dCkgfSB9LAogICAgeyAid2Via2l0UGVyc3BlY3RpdmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRQZXJzcGVjdGl2ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSkg
fSB9LAogICAgeyAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJz
cGVjdGl2ZU9yaWdpbikgfSB9LAogICAgeyAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCkgfSB9LAogICAgeyAid2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5Z
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSkgfSB9LAog
ICAgeyAid2Via2l0UHJpbnRDb2xvckFkanVzdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBy
aW50Q29sb3JBZGp1c3QpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UHJpbnRDb2xvckFk
anVzdCkgfSB9LAogICAgeyAid2Via2l0UnRsT3JkZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRSdGxPcmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRSdGxPcmRlcmlu
ZykgfSB9LAogICAgeyAid2Via2l0UnVieVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0UnVieVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ1YnlQb3NpdGlv
bikgfSB9LAogICAgeyAid2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0U2hhcGVJbWFnZVRocmVzaG9sZCkgfSB9LAogICAgeyAid2Via2l0U2hhcGVNYXJnaW4iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZU1hcmdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRTaGFwZU1hcmdpbikgfSB9LAogICAgeyAid2Via2l0U2hhcGVPdXRzaWRlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0U2hhcGVPdXRzaWRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFNoYXBlT3V0c2lkZSkgfSB9LAogICAgeyAid2Via2l0VGV4dENvbWJpbmUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0Q29tYmluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRUZXh0Q29tYmluZSkgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUZXh0RGVjb3JhdGlvbikgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb25D
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uQ29sb3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25Db2xvcikgfSB9LAogICAgeyAi
d2Via2l0VGV4dERlY29yYXRpb25MaW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERl
Y29yYXRpb25MaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9u
TGluZSkgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb25Ta2lwIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VGV4dERlY29yYXRpb25Ta2lwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHREZWNvcmF0aW9uU2tpcCkgfSB9LAogICAgeyAid2Via2l0VGV4dERlY29yYXRpb25T
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TdHlsZSkgfSB9LAogICAgeyAi
d2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkgfSB9LAogICAgeyAid2Via2l0VGV4dEVtcGhhc2lzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpcykgfSB9LAogICAgeyAid2Via2l0VGV4dEVtcGhhc2lzQ29sb3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvcikgfSB9LAogICAgeyAid2Via2l0VGV4
dEVtcGhhc2lzUG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQ
b3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlv
bikgfSB9LAogICAgeyAid2Via2l0VGV4dEVtcGhhc2lzU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUZXh0RW1waGFzaXNTdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSkgfSB9LAogICAgeyAid2Via2l0VGV4dEZpbGxDb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRleHRGaWxsQ29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dEZpbGxDb2xvcikgfSB9LAogICAgeyAid2Via2l0VGV4dE9yaWVudGF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dE9yaWVudGF0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHRPcmllbnRhdGlvbikgfSB9LAogICAgeyAid2Via2l0VGV4dFNlY3Vy
aXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNlY3VyaXR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFRleHRTZWN1cml0eSkgfSB9LAogICAgeyAid2Via2l0VGV4dFNpemVB
ZGp1c3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2l6ZUFkanVzdCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2l6ZUFkanVzdCkgfSB9LAogICAgeyAid2Via2l0VGV4
dFN0cm9rZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZSkgfSB9LAogICAgeyAid2Via2l0VGV4dFN0cm9r
ZUNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VDb2xvcikgfSB9LAogICAgeyAid2Via2l0
VGV4dFN0cm9rZVdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVdpZHRo
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VXaWR0aCkgfSB9LAogICAg
eyAid2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dFVuZGVybGluZVBvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRV
bmRlcmxpbmVQb3NpdGlvbikgfSB9LAogICAgeyAid2Via2l0VGV4dFpvb20iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0Wm9vbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
Wm9vbSkgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3JtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybSkgfSB9
LAogICAgeyAid2Via2l0VHJhbnNmb3JtT3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtT3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9y
aWdpbikgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3JtT3JpZ2luWCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtT3JpZ2luWCkgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3JtT3JpZ2luWSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblkpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWSkgfSB9LAogICAgeyAid2Via2l0VHJhbnNmb3Jt
T3JpZ2luWiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblopLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWikgfSB9LAogICAgeyAid2Vi
a2l0VHJhbnNmb3JtU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TdHls
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TdHlsZSkgfSB9LAogICAg
eyAid2Via2l0VHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbikgfSB9LAogICAgeyAid2Vi
a2l0VHJhbnNpdGlvbkRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbkRl
bGF5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheSkgfSB9LAog
ICAgeyAid2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbikgfSB9LAogICAgeyAid2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblByb3BlcnR5KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSkgfSB9LAogICAgeyAid2Via2l0VHJhbnNpdGlv
blRpbWluZ0Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbikgfSB9LAogICAgeyAid2Via2l0VXNlckRyYWciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRVc2VyRHJhZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyRHJhZykgfSB9
LAogICAgeyAid2Via2l0VXNlck1vZGlmeSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJN
b2RpZnkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlck1vZGlmeSkgfSB9LAogICAg
eyAid2Via2l0VXNlclNlbGVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3Qp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVjdCkgfSB9LAogICAgeyAid2Vi
a2l0V3JpdGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRXcml0aW5nTW9kZSkgfSB9LAogICAgeyAiLWFwcGxl
LWNvbG9yLWZpbHRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9jb2xvcl9k
YXNoX2ZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2FwcGxlX2Rhc2hfY29sb3Jf
ZGFzaF9maWx0ZXIpIH0gfSwKICAgIHsgIi1hcHBsZS1wYXktYnV0dG9uLXN0eWxlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3N0eWxlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFz
aF9zdHlsZSkgfSB9LAogICAgeyAiLWFwcGxlLXBheS1idXR0b24tdHlwZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBl
KSB9IH0sCiAgICB7ICItYXBwbGUtdHJhaWxpbmctd29yZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfYXBwbGVfZGFzaF90cmFpbGluZ19kYXNoX3dvcmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hfd29yZCkgfSB9LAogICAgeyAiLWVwdWItY2Fw
dGlvbi1zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfY2FwdGlvbl9kYXNo
X3NpZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfY2FwdGlvbl9kYXNo
X3NpZGUpIH0gfSwKICAgIHsgIi1lcHViLWh5cGhlbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X2VwdWJfZGFzaF9oeXBoZW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNo
X2h5cGhlbnMpIH0gfSwKICAgIHsgIi1lcHViLXRleHQtY29tYmluZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5lKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5lKSB9IH0sCiAgICB7ICItZXB1Yi10
ZXh0LWVtcGhhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNo
X2VtcGhhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpcykgfSB9LAogICAgeyAiLWVwdWItdGV4dC1lbXBoYXNpcy1jb2xvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNp
c19kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItZXB1Yi10ZXh0LWVtcGhhc2lzLXN0eWxlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5
bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhh
c2lzX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIi1lcHViLXRleHQtb3JpZW50YXRpb24iLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24pLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uKSB9
IH0sCiAgICB7ICItZXB1Yi10ZXh0LXRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
ZXB1Yl9kYXNoX3RleHRfZGFzaF90cmFuc2Zvcm0pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF9lcHViX2Rhc2hfdGV4dF9kYXNoX3RyYW5zZm9ybSkgfSB9LAogICAgeyAiLWVwdWItd29yZC1i
cmVhayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhayks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93b3JkX2Rhc2hfYnJlYWspIH0g
fSwKICAgIHsgIi1lcHViLXdyaXRpbmctbW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1
Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1
Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlKSB9IH0sCiAgICB7ICItaW50ZXJuYWwtdGV4dC1hdXRv
c2l6aW5nLXN0YXR1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfaW50ZXJuYWxfZGFzaF90ZXh0
X2Rhc2hfYXV0b3NpemluZ19kYXNoX3N0YXR1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X2ludGVybmFsX2Rhc2hfdGV4dF9kYXNoX2F1dG9zaXppbmdfZGFzaF9zdGF0dXMpIH0gfSwKICAg
IHsgIi13ZWJraXQtYWxpZ24tY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYWxpZ25fZGFzaF9jb250ZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYWxpZ25fZGFzaF9jb250ZW50KSB9IH0sCiAgICB7ICItd2Via2l0LWFsaWduLWl0
ZW1zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2l0ZW1z
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9pdGVt
cykgfSB9LAogICAgeyAiLXdlYmtpdC1hbGlnbi1zZWxmIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGYpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGYpIH0gfSwKICAgIHsgIi13ZWJraXQtYWx0Iiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbHQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbHQpIH0gfSwKICAgIHsgIi13ZWJraXQtYW5pbWF0aW9u
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb24pLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb24pIH0gfSwKICAgIHsgIi13
ZWJraXQtYW5pbWF0aW9uLWRlbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hbmltYXRpb25fZGFzaF9kZWxheSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RlbGF5KSB9IH0sCiAgICB7ICItd2Via2l0LWFuaW1hdGlv
bi1kaXJlY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlv
bl9kYXNoX2RpcmVjdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC1hbmltYXRpb24t
ZHVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9k
YXNoX2R1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5p
bWF0aW9uX2Rhc2hfZHVyYXRpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtYW5pbWF0aW9uLWZpbGwt
bW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hf
ZmlsbF9kYXNoX21vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9h
bmltYXRpb25fZGFzaF9maWxsX2Rhc2hfbW9kZSkgfSB9LAogICAgeyAiLXdlYmtpdC1hbmltYXRp
b24taXRlcmF0aW9uLWNvdW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9h
bmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2NvdW50KSB9
IH0sCiAgICB7ICItd2Via2l0LWFuaW1hdGlvbi1uYW1lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9uYW1lKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfbmFtZSkgfSB9LAogICAgeyAiLXdlYmtp
dC1hbmltYXRpb24tcGxheS1zdGF0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlKSB9IH0sCiAg
ICB7ICItd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGlt
aW5nX2Rhc2hfZnVuY3Rpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtYXBwZWFyYW5jZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FwcGVhcmFuY2UpIH0gfSwKICAgIHsgIi13ZWJraXQt
YmFja2Ryb3AtZmlsdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNr
ZHJvcF9kYXNoX2ZpbHRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JhY2tkcm9wX2Rhc2hfZmlsdGVyKSB9IH0sCiAgICB7ICItd2Via2l0LWJhY2tmYWNlLXZpc2li
aWxpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hf
dmlzaWJpbGl0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tm
YWNlX2Rhc2hfdmlzaWJpbGl0eSkgfSB9LAogICAgeyAiLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlw
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNo
X2NsaXApIH0gfSwKICAgIHsgIi13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jb21wb3NpdGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfY29t
cG9zaXRlKSB9IH0sCiAgICB7ICItd2Via2l0LWJhY2tncm91bmQtb3JpZ2luIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX29yaWdpbikg
fSB9LAogICAgeyAiLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9zaXplKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX3NpemUpIH0gfSwKICAgIHsgIi13
ZWJraXQtYm9yZGVyLWFmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9hZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JvcmRlcl9kYXNoX2FmdGVyKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1hZnRlci1jb2xv
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRl
cl9kYXNoX2FmdGVyX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWFmdGVy
LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9h
ZnRlcl9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXIt
YWZ0ZXItd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2FmdGVyX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICItd2Via2l0LWJv
cmRlci1iZWZvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRl
cl9kYXNoX2JlZm9yZSkgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItYmVmb3JlLWNvbG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFz
aF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2JlZm9yZV9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1iZWZvcmUt
c3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Jl
Zm9yZV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVy
LWJlZm9yZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfYmVmb3JlX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF93aWR0aCkgfSB9LAogICAgeyAiLXdlYmtp
dC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0
LXJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
Ym90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdodF9kYXNoX3JhZGl1cykg
fSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmQpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWVu
ZC1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
ZW5kX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9lbmRfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItZW5k
LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9l
bmRfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX2VuZF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1lbmQt
d2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Vu
ZF9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWZpdCIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0KSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0KSB9IH0s
CiAgICB7ICItd2Via2l0LWJvcmRlci1ob3Jpem9udGFsLXNwYWNpbmciLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9zcGFjaW5n
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfaG9y
aXpvbnRhbF9kYXNoX3NwYWNpbmcpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLWltYWdlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2ltYWdlKSB9
IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiLXdlYmtpdC1i
b3JkZXItc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXN0YXJ0LWNvbG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2Nv
bG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
c3RhcnRfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiLXdlYmtpdC1ib3JkZXItc3RhcnQtc3R5bGUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rh
c2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9zdGFydF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICItd2Via2l0LWJvcmRlci1zdGFydC13
aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3Rh
cnRfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX3N0YXJ0X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXRv
cC1sZWZ0LXJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXMpIH0g
fSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFk
aXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
dG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMpIH0gfSwKICAgIHsgIi13ZWJraXQtYm9yZGVyLXZl
cnRpY2FsLXNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRl
cl9kYXNoX3ZlcnRpY2FsX2Rhc2hfc3BhY2luZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3ZlcnRpY2FsX2Rhc2hfc3BhY2luZykgfSB9LAogICAg
eyAiLXdlYmtpdC1ib3gtYWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JveF9kYXNoX2FsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym94X2Rhc2hfYWxpZ24pIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWsi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9icmVhayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9k
YXNoX2RlY29yYXRpb25fZGFzaF9icmVhaykgfSB9LAogICAgeyAiLXdlYmtpdC1ib3gtZGlyZWN0
aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJlY3Rp
b24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJl
Y3Rpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LWZsZXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2ZsZXgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4KSB9IH0sCiAgICB7ICItd2Via2l0LWJveC1mbGV4
LWdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4
X2Rhc2hfZ3JvdXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hf
ZGFzaF9mbGV4X2Rhc2hfZ3JvdXApIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LWxpbmVzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5lcyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2xpbmVzKSB9IH0sCiAgICB7
ICItd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3hfZGFzaF9vcmRpbmFsX2Rhc2hfZ3JvdXApLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmRpbmFsX2Rhc2hfZ3JvdXApIH0gfSwKICAg
IHsgIi13ZWJraXQtYm94LW9yaWVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfb3JpZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfb3JpZW50KSB9IH0sCiAgICB7ICItd2Via2l0LWJveC1wYWNrIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9wYWNrKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFjaykgfSB9LAogICAgeyAiLXdl
YmtpdC1ib3gtcmVmbGVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94
X2Rhc2hfcmVmbGVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3JlZmxlY3QpIH0gfSwKICAgIHsgIi13ZWJraXQtYm94LXNoYWRvdyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfc2hhZG93KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfc2hhZG93KSB9IH0sCiAgICB7ICIt
d2Via2l0LWJveC1zaXppbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3NpemluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3NpemluZykgfSB9LAogICAgeyAiLXdlYmtpdC1jbGlwLXBhdGgiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NsaXBfZGFzaF9wYXRoKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xpcF9kYXNoX3BhdGgpIH0gfSwKICAgIHsgIi13ZWJr
aXQtY29sdW1uLWF4aXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVt
bl9kYXNoX2F4aXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9heGlzKSB9IH0sCiAgICB7ICItd2Via2l0LWNvbHVtbi1icmVhay1hZnRlciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9h
ZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNo
X2JyZWFrX2Rhc2hfYWZ0ZXIpIH0gfSwKICAgIHsgIi13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9y
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtf
ZGFzaF9iZWZvcmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9icmVha19kYXNoX2JlZm9yZSkgfSB9LAogICAgeyAiLXdlYmtpdC1jb2x1bW4tYnJl
YWstaW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFz
aF9icmVha19kYXNoX2luc2lkZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfaW5zaWRlKSB9IH0sCiAgICB7ICItd2Via2l0LWNv
bHVtbi1jb3VudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfY291bnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9jb3VudCkgfSB9LAogICAgeyAiLXdlYmtpdC1jb2x1bW4tZmlsbCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfZmlsbCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2ZpbGwpIH0gfSwKICAgIHsgIi13
ZWJraXQtY29sdW1uLWdhcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1uX2Rhc2hfZ2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1uX2Rhc2hfZ2FwKSB9IH0sCiAgICB7ICItd2Via2l0LWNvbHVtbi1wcm9ncmVzc2lvbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcHJvZ3Jlc3Npb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9wcm9n
cmVzc2lvbikgfSB9LAogICAgeyAiLXdlYmtpdC1jb2x1bW4tcnVsZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGUpIH0gfSwKICAgIHsgIi13ZWJr
aXQtY29sdW1uLXJ1bGUtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiLXdl
YmtpdC1jb2x1bW4tcnVsZS1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICIt
d2Via2l0LWNvbHVtbi1ydWxlLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsg
Ii13ZWJraXQtY29sdW1uLXNwYW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2NvbHVtbl9kYXNoX3NwYW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9zcGFuKSB9IH0sCiAgICB7ICItd2Via2l0LWNvbHVtbi13aWR0aCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfd2lkdGgpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF93aWR0aCkgfSB9
LAogICAgeyAiLXdlYmtpdC1jb2x1bW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9jb2x1bW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1ucykgfSB9LAogICAgeyAiLXdlYmtpdC1jdXJzb3ItdmlzaWJpbGl0eSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY3Vyc29yX2Rhc2hfdmlzaWJpbGl0eSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNoX3Zpc2liaWxpdHkpIH0g
fSwKICAgIHsgIi13ZWJraXQtZmlsdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9maWx0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0
ZXIpIH0gfSwKICAgIHsgIi13ZWJraXQtZmxleCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfZmxleCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Zs
ZXgpIH0gfSwKICAgIHsgIi13ZWJraXQtZmxleC1iYXNpcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzKSB9IH0sCiAgICB7ICItd2Via2l0LWZsZXgt
ZGlyZWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hf
ZGlyZWN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9k
YXNoX2RpcmVjdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC1mbGV4LWZsb3ciLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9mbG93KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Zsb3cpIH0gfSwKICAgIHsgIi13ZWJr
aXQtZmxleC1ncm93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rh
c2hfZ3JvdyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9ncm93KSB9IH0sCiAgICB7ICItd2Via2l0LWZsZXgtc2hyaW5rIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfc2hyaW5rKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3NocmluaykgfSB9LAogICAgeyAiLXdlYmtp
dC1mbGV4LXdyYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF93cmFwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNo
X3dyYXApIH0gfSwKICAgIHsgIi13ZWJraXQtZm9udC1rZXJuaW5nIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfa2VybmluZyksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRfZGFzaF9rZXJuaW5nKSB9IH0sCiAgICB7ICItd2Vi
a2l0LWZvbnQtc21vb3RoaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9m
b250X2Rhc2hfc21vb3RoaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfZm9udF9kYXNoX3Ntb290aGluZykgfSB9LAogICAgeyAiLXdlYmtpdC1oeXBoZW5hdGUtY2hh
cmFjdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFz
aF9jaGFyYWN0ZXIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9jaGFyYWN0ZXIpIH0gfSwKICAgIHsgIi13ZWJraXQtaHlwaGVuYXRlLWxpbWl0
LWFmdGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFz
aF9saW1pdF9kYXNoX2FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9hZnRlcikgfSB9LAogICAgeyAiLXdlYmtpdC1o
eXBoZW5hdGUtbGltaXQtYmVmb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYmVmb3JlKSB9IH0s
CiAgICB7ICItd2Via2l0LWh5cGhlbmF0ZS1saW1pdC1saW5lcyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lcyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rh
c2hfbGluZXMpIH0gfSwKICAgIHsgIi13ZWJraXQtaHlwaGVucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVucyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2h5cGhlbnMpIH0gfSwKICAgIHsgIi13ZWJraXQtaW5pdGlhbC1sZXR0ZXIiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2luaXRpYWxfZGFzaF9sZXR0ZXIpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9pbml0aWFsX2Rhc2hfbGV0dGVy
KSB9IH0sCiAgICB7ICItd2Via2l0LWp1c3RpZnktY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVudCkgfSB9LAogICAgeyAi
LXdlYmtpdC1qdXN0aWZ5LWl0ZW1zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9qdXN0aWZ5X2Rhc2hfaXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9qdXN0aWZ5X2Rhc2hfaXRlbXMpIH0gfSwKICAgIHsgIi13ZWJraXQtbGluZS1hbGlnbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduKSB9IH0s
CiAgICB7ICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNoX2NvbnRhaW4pIH0gfSwK
ICAgIHsgIi13ZWJraXQtbGluZS1icmVhayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbGluZV9kYXNoX2JyZWFrKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbGluZV9kYXNoX2JyZWFrKSB9IH0sCiAgICB7ICItd2Via2l0LWxpbmUtY2xhbXAiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9jbGFtcCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9jbGFtcCkgfSB9LAog
ICAgeyAiLXdlYmtpdC1saW5lLWdyaWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2xpbmVfZGFzaF9ncmlkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbGluZV9kYXNoX2dyaWQpIH0gfSwKICAgIHsgIi13ZWJraXQtbGluZS1zbmFwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfc25hcCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9zbmFwKSB9IH0sCiAgICB7ICIt
d2Via2l0LWxvY2FsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxlKSB9IH0sCiAg
ICB7ICItd2Via2l0LWxvZ2ljYWwtaGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCkgfSB9LAogICAgeyAiLXdlYmtpdC1sb2dp
Y2FsLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rh
c2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2Fs
X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWFmdGVyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2FmdGVyKSB9IH0sCiAgICB7
ICItd2Via2l0LW1hcmdpbi1hZnRlci1jb2xsYXBzZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xsYXBzZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2FmdGVyX2Rhc2hfY29sbGFw
c2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWJlZm9yZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlKSB9IH0sCiAgICB7ICItd2Vi
a2l0LW1hcmdpbi1iZWZvcmUtY29sbGFwc2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hcmdpbl9kYXNoX2JlZm9yZV9kYXNoX2NvbGxhcHNlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hfY29sbGFwc2Up
IH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWJvdHRvbS1jb2xsYXBzZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2Up
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9ib3R0
b21fZGFzaF9jb2xsYXBzZSkgfSB9LAogICAgeyAiLXdlYmtpdC1tYXJnaW4tY29sbGFwc2UiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfY29sbGFw
c2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFyZ2luLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICItd2Via2l0LW1hcmdp
bi1zdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
c3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFz
aF9zdGFydCkgfSB9LAogICAgeyAiLXdlYmtpdC1tYXJnaW4tdG9wLWNvbGxhcHNlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF90b3BfZGFzaF9jb2xsYXBz
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX3Rv
cF9kYXNoX2NvbGxhcHNlKSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2siLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9tYXNrKSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2stYm94LWltYWdlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2Up
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rh
c2hfaW1hZ2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2Vf
ZGFzaF9vdXRzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNr
X2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXQpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFz
ay1ib3gtaW1hZ2UtcmVwZWF0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQp
IH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utc2xpY2UiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3NsaWNl
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9k
YXNoX2ltYWdlX2Rhc2hfc2xpY2UpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Ut
c291cmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UpIH0gfSwKICAgIHsg
Ii13ZWJraXQtbWFzay1ib3gtaW1hZ2Utd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3dpZHRoKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rh
c2hfd2lkdGgpIH0gfSwKICAgIHsgIi13ZWJraXQtbWFzay1jbGlwIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY2xpcCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jbGlwKSB9IH0sCiAgICB7ICItd2Via2l0LW1h
c2stY29tcG9zaXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rh
c2hfY29tcG9zaXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFz
a19kYXNoX2NvbXBvc2l0ZSkgfSB9LAogICAgeyAiLXdlYmtpdC1tYXNrLWltYWdlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfaW1hZ2UpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfaW1hZ2UpIH0gfSwKICAgIHsg
Ii13ZWJraXQtbWFzay1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9vcmlnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfb3JpZ2luKSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2stcG9zaXRpb24iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbikg
fSB9LAogICAgeyAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3gpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF94KSB9IH0s
CiAgICB7ICItd2Via2l0LW1hc2stcG9zaXRpb24teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0aW9uX2Rhc2hfeSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3kpIH0gfSwKICAg
IHsgIi13ZWJraXQtbWFzay1yZXBlYXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hc2tfZGFzaF9yZXBlYXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfcmVwZWF0KSB9IH0sCiAgICB7ICItd2Via2l0LW1hc2stc2l6ZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfc2l6ZSkgfSB9LAogICAg
eyAiLXdlYmtpdC1tYXNrLXNvdXJjZS10eXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9tYXNrX2Rhc2hfc291cmNlX2Rhc2hfdHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9zb3VyY2VfZGFzaF90eXBlKSB9IH0sCiAgICB7
ICItd2Via2l0LW1heC1sb2dpY2FsLWhlaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpIH0gfSwK
ICAgIHsgIi13ZWJraXQtbWF4LWxvZ2ljYWwtd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2ljYWxfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2ljYWxfZGFzaF93aWR0aCkgfSB9
LAogICAgeyAiLXdlYmtpdC1taW4tbG9naWNhbC1oZWlnaHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0
KSB9IH0sCiAgICB7ICItd2Via2l0LW1pbi1sb2dpY2FsLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGgpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfd2lk
dGgpIH0gfSwKICAgIHsgIi13ZWJraXQtbmJzcC1tb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlKSB9IH0sCiAgICB7ICItd2Via2l0LW9wYWNpdHki
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29wYWNpdHkpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcGFjaXR5KSB9IH0sCiAgICB7ICItd2Via2l0
LW9yZGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29yZGVyKSB9IH0sCiAgICB7ICItd2Vi
a2l0LXBhZGRpbmctYWZ0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9hZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3BhZGRpbmdfZGFzaF9hZnRlcikgfSB9LAogICAgeyAiLXdlYmtpdC1wYWRkaW5nLWJlZm9yZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2JlZm9yZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9iZWZv
cmUpIH0gfSwKICAgIHsgIi13ZWJraXQtcGFkZGluZy1lbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICItd2Via2l0LXBh
ZGRpbmctc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdf
ZGFzaF9zdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRp
bmdfZGFzaF9zdGFydCkgfSB9LAogICAgeyAiLXdlYmtpdC1wZXJzcGVjdGl2ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZSkgfSB9LAogICAgeyAiLXdlYmtpdC1w
ZXJzcGVjdGl2ZS1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bl
cnNwZWN0aXZlX2Rhc2hfb3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW4pIH0gfSwKICAgIHsgIi13ZWJraXQtcGVyc3Bl
Y3RpdmUtb3JpZ2luLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNw
ZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeCkgfSB9LAogICAgeyAiLXdl
YmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KSB9IH0s
CiAgICB7ICItd2Via2l0LXByaW50LWNvbG9yLWFkanVzdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfcHJpbnRfZGFzaF9jb2xvcl9kYXNoX2FkanVzdCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3ByaW50X2Rhc2hfY29sb3JfZGFzaF9hZGp1c3Qp
IH0gfSwKICAgIHsgIi13ZWJraXQtcnRsLW9yZGVyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ydGxfZGFzaF9vcmRlcmluZyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3J0bF9kYXNoX29yZGVyaW5nKSB9IH0sCiAgICB7ICItd2Via2l0LXJ1
YnktcG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFz
aF9wb3NpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1Ynlf
ZGFzaF9wb3NpdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfaW1hZ2VfZGFz
aF90aHJlc2hvbGQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFw
ZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkKSB9IH0sCiAgICB7ICItd2Via2l0LXNoYXBlLW1h
cmdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9tYXJn
aW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21h
cmdpbikgfSB9LAogICAgeyAiLXdlYmtpdC1zaGFwZS1vdXRzaWRlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX291dHNpZGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX291dHNpZGUpIH0gfSwKICAgIHsgIi13
ZWJraXQtdGV4dC1jb21iaW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90
ZXh0X2Rhc2hfY29tYmluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9jb21iaW5lKSB9IH0sCiAgICB7ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb24p
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3Jh
dGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3IiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29s
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbi1s
aW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3Jh
dGlvbl9kYXNoX2xpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90
ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUpIH0gfSwKICAgIHsgIi13ZWJraXQtdGV4dC1k
ZWNvcmF0aW9uLXNraXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCkgfSB9LAogICAgeyAiLXdl
YmtpdC10ZXh0LWRlY29yYXRpb24tc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKSB9
IH0sCiAgICB7ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbnNfZGFzaF9pbl9k
YXNoX2VmZmVjdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9kZWNvcmF0aW9uc19kYXNoX2luX2Rhc2hfZWZmZWN0KSB9IH0sCiAgICB7ICItd2Via2l0
LXRleHQtZW1waGFzaXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9lbXBoYXNpcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9lbXBoYXNpcykgfSB9LAogICAgeyAiLXdlYmtpdC10ZXh0LWVtcGhhc2lzLWNvbG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICItd2Via2l0LXRleHQtZW1waGFz
aXMtcG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfcG9zaXRpb24pIH0gfSwKICAgIHsgIi13
ZWJraXQtdGV4dC1lbXBoYXNpcy1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZSkgfSB9LAog
ICAgeyAiLXdlYmtpdC10ZXh0LWZpbGwtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9maWxsX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yKSB9IH0sCiAgICB7
ICItd2Via2l0LXRleHQtb3JpZW50YXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9vcmllbnRhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9vcmllbnRhdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC10
ZXh0LXNlY3VyaXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfc2VjdXJpdHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfc2VjdXJpdHkpIH0gfSwKICAgIHsgIi13ZWJraXQtdGV4dC1zaXplLWFkanVzdCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NpemVfZGFzaF9hZGp1
c3QpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2l6
ZV9kYXNoX2FkanVzdCkgfSB9LAogICAgeyAiLXdlYmtpdC10ZXh0LXN0cm9rZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2UpIH0gfSwKICAgIHsg
Ii13ZWJraXQtdGV4dC1zdHJva2UtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF9jb2xvcikgfSB9LAogICAg
eyAiLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZV9kYXNoX3dpZHRoKSB9IH0sCiAg
ICB7ICItd2Via2l0LXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfcG9zaXRpb24pLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rh
c2hfcG9zaXRpb24pIH0gfSwKICAgIHsgIi13ZWJraXQtdGV4dC16b29tIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF96b29tKSB9IH0sCiAgICB7ICItd2Via2l0
LXRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3Jt
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtKSB9IH0s
CiAgICB7ICItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbikgfSB9LAogICAgeyAiLXdl
YmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3gpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94KSB9IH0sCiAgICB7
ICItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3kpIH0gfSwK
ICAgIHsgIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi16Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF96KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeikg
fSB9LAogICAgeyAiLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIi13
ZWJraXQtdHJhbnNpdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNpdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRp
b24pIH0gfSwKICAgIHsgIi13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5KSB9IH0sCiAg
ICB7ICItd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbiksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbikgfSB9LAogICAg
eyAiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHkpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHkpIH0gfSwKICAgIHsg
Ii13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbiksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25fZGFzaF90aW1p
bmdfZGFzaF9mdW5jdGlvbikgfSB9LAogICAgeyAiLXdlYmtpdC11c2VyLWRyYWciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9kcmFnKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX2RyYWcpIH0gfSwKICAgIHsgIi13
ZWJraXQtdXNlci1tb2RpZnkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Vz
ZXJfZGFzaF9tb2RpZnkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91
c2VyX2Rhc2hfbW9kaWZ5KSB9IH0sCiAgICB7ICItd2Via2l0LXVzZXItc2VsZWN0Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX3NlbGVjdCkgfSB9LAogICAg
eyAiLXdlYmtpdC13cml0aW5nLW1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3dyaXRpbmdfZGFzaF9tb2RlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfd3JpdGluZ19kYXNoX21vZGUpIH0gfSwKICAgIHsgImFsaWduLWNvbnRlbnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9jb250ZW50KSB9IH0sCiAgICB7ICJhbGlnbi1pdGVtcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduX2Rhc2hfaXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFz
aF9pdGVtcykgfSB9LAogICAgeyAiYWxpZ24tc2VsZiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdu
X2Rhc2hfc2VsZiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGYpIH0gfSwK
ICAgIHsgImFsaWdubWVudC1iYXNlbGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9k
YXNoX2Jhc2VsaW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2Vs
aW5lKSB9IH0sCiAgICB7ICJhbmltYXRpb24tZGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25fZGFzaF9kZWxheSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9k
ZWxheSkgfSB9LAogICAgeyAiYW5pbWF0aW9uLWRpcmVjdGlvbiIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25fZGFzaF9kaXJlY3Rpb24pIH0gfSwKICAgIHsgImFuaW1hdGlvbi1kdXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uKSB9IH0sCiAgICB7ICJhbmltYXRpb24tZmlsbC1t
b2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGUpIH0gfSwK
ICAgIHsgImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudCkgfSB9LAogICAgeyAiYW5pbWF0aW9u
LW5hbWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX25hbWUpIH0gfSwKICAgIHsgImFuaW1hdGlvbi1w
bGF5LXN0YXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0
YXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFzaF9zdGF0
ZSkgfSB9LAogICAgeyAiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uKSB9IH0sCiAgICB7ICJh
c3BlY3QtcmF0aW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RfZGFzaF9yYXRpbyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RfZGFzaF9yYXRpbykgfSB9LAogICAgeyAiYmFja2dyb3Vu
ZC1hdHRhY2htZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0dGFjaG1l
bnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0dGFjaG1lbnQpIH0g
fSwKICAgIHsgImJhY2tncm91bmQtYmxlbmQtbW9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRfZGFzaF9ibGVuZF9kYXNoX21vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dy
b3VuZF9kYXNoX2JsZW5kX2Rhc2hfbW9kZSkgfSB9LAogICAgeyAiYmFja2dyb3VuZC1jbGlwIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2NsaXApLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYmFja2dyb3VuZF9kYXNoX2NsaXApIH0gfSwKICAgIHsgImJhY2tncm91bmQtY29sb3Ii
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJiYWNrZ3JvdW5kLWlt
YWdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2ltYWdlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9pbWFnZSkgfSB9LAogICAgeyAiYmFja2dyb3Vu
ZC1vcmlnaW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9vcmlnaW4pIH0gfSwKICAgIHsgImJh
Y2tncm91bmQtcG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9z
aXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uKSB9
IH0sCiAgICB7ICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF94KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tn
cm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3gpIH0gfSwKICAgIHsgImJhY2tncm91bmQtcG9zaXRp
b24teSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3kp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeSkg
fSB9LAogICAgeyAiYmFja2dyb3VuZC1yZXBlYXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3Jv
dW5kX2Rhc2hfcmVwZWF0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9y
ZXBlYXQpIH0gfSwKICAgIHsgImJhY2tncm91bmQtc2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRfZGFzaF9zaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFz
aF9zaXplKSB9IH0sCiAgICB7ICJiYXNlbGluZS1zaGlmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
c2VsaW5lX2Rhc2hfc2hpZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVfZGFzaF9z
aGlmdCkgfSB9LAogICAgeyAiYmxvY2stc2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrX2Rh
c2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja19kYXNoX3NpemUpIH0gfSwKICAg
IHsgImJvcmRlci1ibG9jayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrKSB9IH0sCiAgICB7ICJib3Jk
ZXItYmxvY2stY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNo
X2NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfY29s
b3IpIH0gfSwKICAgIHsgImJvcmRlci1ibG9jay1lbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9ibG9ja19kYXNoX2VuZCkgfSB9LAogICAgeyAiYm9yZGVyLWJsb2NrLWVuZC1jb2xvciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfY29sb3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9jb2xv
cikgfSB9LAogICAgeyAiYm9yZGVyLWJsb2NrLWVuZC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAi
Ym9yZGVyLWJsb2NrLWVuZC13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Js
b2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9lbmRfZGFzaF93aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyLWJsb2NrLXN0
YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0KSB9IH0sCiAg
ICB7ICJib3JkZXItYmxvY2stc3RhcnQtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJib3Jk
ZXItYmxvY2stc3RhcnQtc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9j
a19kYXNoX3N0YXJ0X2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXItYmxvY2st
c3RhcnQtd2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0
YXJ0X2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tf
ZGFzaF9zdGFydF9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICJib3JkZXItYmxvY2stc3R5bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0eWxlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgImJv
cmRlci1ibG9jay13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF93
aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2JvdHRvbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b20p
IH0gfSwKICAgIHsgImJvcmRlci1ib3R0b20tY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b21fZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ib3R0b21fZGFzaF9jb2xvcikgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJh
ZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX2xlZnRfZGFz
aF9yYWRpdXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdodF9kYXNoX3Jh
ZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdo
dF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWJvdHRvbS1zdHlsZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXIt
Ym90dG9tLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
d2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lk
dGgpIH0gfSwKICAgIHsgImJvcmRlci1jb2xsYXBzZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2NvbGxhcHNlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2NvbGxh
cHNlKSB9IH0sCiAgICB7ICJib3JkZXItY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9jb2xvcikgfSB9
LAogICAgeyAiYm9yZGVyLWVuZC1lbmQtcmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfZW5kX2Rhc2hfZW5kX2Rhc2hfcmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWVu
ZC1zdGFydC1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9z
dGFydF9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRf
ZGFzaF9zdGFydF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLWltYWdlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfaW1hZ2UpIH0gfSwKICAgIHsgImJvcmRlci1pbWFnZS1vdXRzZXQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldCkgfSB9LAogICAgeyAiYm9yZGVy
LWltYWdlLXJlcGVhdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hf
cmVwZWF0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfcmVw
ZWF0KSB9IH0sCiAgICB7ICJib3JkZXItaW1hZ2Utc2xpY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NsaWNlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2ltYWdlX2Rhc2hfc2xpY2UpIH0gfSwKICAgIHsgImJvcmRlci1pbWFnZS1zb3VyY2Ui
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZSkgfSB9LAogICAg
eyAiYm9yZGVyLWltYWdlLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1h
Z2VfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9k
YXNoX3dpZHRoKSB9IH0sCiAgICB7ICJib3JkZXItaW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lu
bGluZSkgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2lubGluZV9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJib3JkZXItaW5saW5lLWVu
ZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmQpIH0gfSwKICAgIHsg
ImJvcmRlci1pbmxpbmUtZW5kLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hf
aW5saW5lX2Rhc2hfZW5kX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgImJvcmRlci1pbmxp
bmUtZW5kLXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hf
ZW5kX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
X2Rhc2hfZW5kX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgImJvcmRlci1pbmxpbmUtZW5kLXdpZHRo
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lk
dGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rh
c2hfd2lkdGgpIH0gfSwKICAgIHsgImJvcmRlci1pbmxpbmUtc3RhcnQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCkgfSB9LAogICAgeyAiYm9yZGVyLWlubGlu
ZS1zdGFydC1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNo
X3N0YXJ0X2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfc3RhcnRfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1zdGFy
dC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0
X2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rh
c2hfc3RhcnRfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1zdGFydC13aWR0
aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hf
d2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnRfZGFzaF93aWR0aCkgfSB9LAogICAgeyAiYm9yZGVyLWlubGluZS1zdHlsZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXIt
aW5saW5lLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hf
d2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfd2lk
dGgpIH0gfSwKICAgIHsgImJvcmRlci1sZWZ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfbGVmdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0KSB9IH0sCiAg
ICB7ICJib3JkZXItbGVmdC1jb2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xl
ZnRfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rh
c2hfY29sb3IpIH0gfSwKICAgIHsgImJvcmRlci1sZWZ0LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2xlZnRfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAiYm9yZGVyLWxlZnQtd2lkdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfd2lkdGgpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICJi
b3JkZXItcmFkaXVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVy
LXJpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHQpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHQpIH0gfSwKICAgIHsgImJvcmRlci1yaWdodC1j
b2xvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfY29sb3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xvcikgfSB9LAog
ICAgeyAiYm9yZGVyLXJpZ2h0LXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hf
cmlnaHRfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdo
dF9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJib3JkZXItcmlnaHQtd2lkdGgiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgImJvcmRlci1zcGFj
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3BhY2luZyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFjaW5nKSB9IH0sCiAgICB7ICJib3JkZXItc3RhcnQt
ZW5kLXJhZGl1cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfZW5k
X2Rhc2hfcmFkaXVzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0YXJ0X2Rh
c2hfZW5kX2Rhc2hfcmFkaXVzKSB9IH0sCiAgICB7ICJib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVz
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9zdGFydF9kYXNoX3Jh
ZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0YXJ0
X2Rhc2hfcmFkaXVzKSB9IH0sCiAgICB7ICJib3JkZXItc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9z
dHlsZSkgfSB9LAogICAgeyAiYm9yZGVyLXRvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX3RvcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3ApIH0gfSwKICAg
IHsgImJvcmRlci10b3AtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3Bf
ZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9j
b2xvcikgfSB9LAogICAgeyAiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXMpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cykgfSB9LAogICAg
eyAiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF90b3BfZGFzaF9yaWdodF9kYXNoX3JhZGl1cyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF90b3BfZGFzaF9yaWdodF9kYXNoX3JhZGl1cykgfSB9LAogICAgeyAiYm9yZGVyLXRv
cC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlKSB9IH0sCiAg
ICB7ICJib3JkZXItdG9wLXdpZHRoIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9w
X2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hf
d2lkdGgpIH0gfSwKICAgIHsgImJvcmRlci13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3dpZHRoKSB9
IH0sCiAgICB7ICJib3gtc2hhZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2hhZG93
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveF9kYXNoX3NoYWRvdykgfSB9LAogICAgeyAiYm94
LXNpemluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2JveF9kYXNoX3NpemluZyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3hfZGFzaF9zaXppbmcpIH0gfSwKICAgIHsgImJyZWFrLWFmdGVyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9hZnRlciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
cmVha19kYXNoX2FmdGVyKSB9IH0sCiAgICB7ICJicmVhay1iZWZvcmUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9icmVha19kYXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNo
X2JlZm9yZSkgfSB9LAogICAgeyAiYnJlYWstaW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJl
YWtfZGFzaF9pbnNpZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9pbnNpZGUp
IH0gfSwKICAgIHsgImJ1ZmZlcmVkLXJlbmRlcmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZl
cmVkX2Rhc2hfcmVuZGVyaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkX2Rhc2hf
cmVuZGVyaW5nKSB9IH0sCiAgICB7ICJjYXB0aW9uLXNpZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
YXB0aW9uX2Rhc2hfc2lkZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uX2Rhc2hfc2lk
ZSkgfSB9LAogICAgeyAiY2FyZXQtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldF9kYXNo
X2NvbG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0X2Rhc2hfY29sb3IpIH0gfSwKICAg
IHsgImNsaXAtcGF0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoKSB9IH0sCiAgICB7ICJjbGlwLXJ1bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jbGlwX2Rhc2hfcnVsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
bGlwX2Rhc2hfcnVsZSkgfSB9LAogICAgeyAiY29sb3ItaW50ZXJwb2xhdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb24pIH0gfSwKICAgIHsgImNvbG9yLWludGVycG9sYXRp
b24tZmlsdGVycyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9k
YXNoX2ZpbHRlcnMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRlcnBvbGF0
aW9uX2Rhc2hfZmlsdGVycykgfSB9LAogICAgeyAiY29sb3ItcHJvZmlsZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9k
YXNoX3Byb2ZpbGUpIH0gfSwKICAgIHsgImNvbG9yLXJlbmRlcmluZyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9yX2Rhc2hfcmVuZGVyaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rh
c2hfcmVuZGVyaW5nKSB9IH0sCiAgICB7ICJjb2xvci1zY2hlbWUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2xvcl9kYXNoX3NjaGVtZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Nj
aGVtZSkgfSB9LAogICAgeyAiY29sdW1uLWNvdW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
X2Rhc2hfY291bnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQpIH0g
fSwKICAgIHsgImNvbHVtbi1maWxsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfZmls
bCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9maWxsKSB9IH0sCiAgICB7ICJj
b2x1bW4tZ2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfZ2FwKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2dhcCkgfSB9LAogICAgeyAiY29sdW1uLXJ1bGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtbl9kYXNoX3J1bGUpIH0gfSwKICAgIHsgImNvbHVtbi1ydWxlLWNvbG9yIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX2NvbG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvcikgfSB9LAogICAgeyAiY29sdW1uLXJ1
bGUtc3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlKSB9IH0s
CiAgICB7ICJjb2x1bW4tcnVsZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNo
X3J1bGVfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxl
X2Rhc2hfd2lkdGgpIH0gfSwKICAgIHsgImNvbHVtbi1zcGFuIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfc3BhbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9zcGFu
KSB9IH0sCiAgICB7ICJjb2x1bW4td2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFz
aF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF93aWR0aCkgfSB9LAog
ICAgeyAiY291bnRlci1pbmNyZW1lbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rhc2hf
aW5jcmVtZW50KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFzaF9pbmNyZW1lbnQp
IH0gfSwKICAgIHsgImNvdW50ZXItcmVzZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rh
c2hfcmVzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlcl9kYXNoX3Jlc2V0KSB9IH0s
CiAgICB7ICJkb21pbmFudC1iYXNlbGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rh
c2hfYmFzZWxpbmUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9iYXNlbGlu
ZSkgfSB9LAogICAgeyAiZW1wdHktY2VsbHMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbXB0eV9kYXNo
X2NlbGxzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5X2Rhc2hfY2VsbHMpIH0gfSwKICAg
IHsgImVuYWJsZS1iYWNrZ3JvdW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlX2Rhc2hfYmFj
a2dyb3VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbmFibGVfZGFzaF9iYWNrZ3JvdW5kKSB9
IH0sCiAgICB7ICJmaWxsLW9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3Bh
Y2l0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eSkgfSB9LAogICAg
eyAiZmlsbC1ydWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX3J1bGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX3J1bGUpIH0gfSwKICAgIHsgImZsZXgtYmFzaXMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfYmFzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmxleF9kYXNoX2Jhc2lzKSB9IH0sCiAgICB7ICJmbGV4LWRpcmVjdGlvbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9k
YXNoX2RpcmVjdGlvbikgfSB9LAogICAgeyAiZmxleC1mbG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmxleF9kYXNoX2Zsb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2Zsb3cpIH0g
fSwKICAgIHsgImZsZXgtZ3JvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9ncm93KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9ncm93KSB9IH0sCiAgICB7ICJmbGV4LXNo
cmluayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmspLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxleF9kYXNoX3NocmluaykgfSB9LAogICAgeyAiZmxleC13cmFwIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9k
YXNoX3dyYXApIH0gfSwKICAgIHsgImZsb29kLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxv
b2RfZGFzaF9jb2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZF9kYXNoX2NvbG9yKSB9
IH0sCiAgICB7ICJmbG9vZC1vcGFjaXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9v
cGFjaXR5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfb3BhY2l0eSkgfSB9LAog
ICAgeyAiZm9udC1kaXNwbGF5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXkp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXkpIH0gfSwKICAgIHsgImZv
bnQtZmFtaWx5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZhbWlseSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmFtaWx5KSB9IH0sCiAgICB7ICJmb250LWZlYXR1cmUt
c2V0dGluZ3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVhdHVyZV9kYXNoX3NldHRp
bmdzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mZWF0dXJlX2Rhc2hfc2V0dGlu
Z3MpIH0gfSwKICAgIHsgImZvbnQta2VybmluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFz
aF9rZXJuaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9rZXJuaW5nKSB9IH0s
CiAgICB7ICJmb250LW9wdGljYWwtc2l6aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNo
X29wdGljYWxfZGFzaF9zaXppbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX29w
dGljYWxfZGFzaF9zaXppbmcpIH0gfSwKICAgIHsgImZvbnQtc2l6ZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRfZGFzaF9zaXplKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zaXpl
KSB9IH0sCiAgICB7ICJmb250LXN0cmV0Y2giLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hf
c3RyZXRjaCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaCkgfSB9LAog
ICAgeyAiZm9udC1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zdHlsZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgImZvbnQtc3lu
dGhlc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpcyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3ludGhlc2lzKSB9IH0sCiAgICB7ICJmb250LXZhcmlh
bnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudCkgfSB9LAogICAgeyAiZm9udC12YXJpYW50LWFsdGVy
bmF0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2FsdGVybmF0
ZXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5h
dGVzKSB9IH0sCiAgICB7ICJmb250LXZhcmlhbnQtY2FwcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zv
bnRfZGFzaF92YXJpYW50X2Rhc2hfY2FwcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfdmFyaWFudF9kYXNoX2NhcHMpIH0gfSwKICAgIHsgImZvbnQtdmFyaWFudC1lYXN0LWFzaWFu
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rhc2hfYXNp
YW4pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rh
c2hfYXNpYW4pIH0gfSwKICAgIHsgImZvbnQtdmFyaWFudC1saWdhdHVyZXMiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2xpZ2F0dXJlcyksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2xpZ2F0dXJlcykgfSB9LAogICAgeyAiZm9u
dC12YXJpYW50LW51bWVyaWMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9k
YXNoX251bWVyaWMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFz
aF9udW1lcmljKSB9IH0sCiAgICB7ICJmb250LXZhcmlhbnQtcG9zaXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX3Bvc2l0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfcG9zaXRpb24pIH0gfSwKICAgIHsgImZvbnQt
dmFyaWF0aW9uLXNldHRpbmdzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhdGlv
bl9kYXNoX3NldHRpbmdzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRp
b25fZGFzaF9zZXR0aW5ncykgfSB9LAogICAgeyAiZm9udC13ZWlnaHQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250X2Rhc2hfd2VpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF93
ZWlnaHQpIH0gfSwKICAgIHsgImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbCksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbCkg
fSB9LAogICAgeyAiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfdmVydGljYWwpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX3ZlcnRpY2FsKSB9IH0sCiAgICB7ICJn
cmlkLWFyZWEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYSkgfSB9LAogICAgeyAiZ3JpZC1hdXRvLWNvbHVtbnMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2NvbHVtbnMpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9jb2x1bW5zKSB9IH0sCiAgICB7ICJn
cmlkLWF1dG8tZmxvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfZmxv
dyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3cpIH0gfSwK
ICAgIHsgImdyaWQtYXV0by1yb3dzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9f
ZGFzaF9yb3dzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfcm93
cykgfSB9LAogICAgeyAiZ3JpZC1jb2x1bW4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
Y29sdW1uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW4pIH0gfSwKICAg
IHsgImdyaWQtY29sdW1uLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5f
ZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX2Vu
ZCkgfSB9LAogICAgeyAiZ3JpZC1jb2x1bW4tZ2FwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9k
YXNoX2NvbHVtbl9kYXNoX2dhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29s
dW1uX2Rhc2hfZ2FwKSB9IH0sCiAgICB7ICJncmlkLWNvbHVtbi1zdGFydCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9zdGFydCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgImdyaWQtZ2FwIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2dhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
X2Rhc2hfZ2FwKSB9IH0sCiAgICB7ICJncmlkLXJvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9yb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3JvdykgfSB9LAogICAg
eyAiZ3JpZC1yb3ctZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2Vu
ZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfZW5kKSB9IH0sCiAg
ICB7ICJncmlkLXJvdy1nYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hf
Z2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9nYXApIH0gfSwK
ICAgIHsgImdyaWQtcm93LXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19k
YXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9zdGFy
dCkgfSB9LAogICAgeyAiZ3JpZC10ZW1wbGF0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFz
aF90ZW1wbGF0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGUpIH0g
fSwKICAgIHsgImdyaWQtdGVtcGxhdGUtYXJlYXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rh
c2hfdGVtcGxhdGVfZGFzaF9hcmVhcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
dGVtcGxhdGVfZGFzaF9hcmVhcykgfSB9LAogICAgeyAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfY29sdW1ucyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5zKSB9IH0sCiAg
ICB7ICJncmlkLXRlbXBsYXRlLXJvd3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVt
cGxhdGVfZGFzaF9yb3dzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX3Jvd3MpIH0gfSwKICAgIHsgImhhbmdpbmctcHVuY3R1YXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9oYW5naW5nX2Rhc2hfcHVuY3R1YXRpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
aGFuZ2luZ19kYXNoX3B1bmN0dWF0aW9uKSB9IH0sCiAgICB7ICJpbWFnZS1vcmllbnRhdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanND
U1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfb3JpZW50YXRpb24pLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25faW1hZ2VfZGFzaF9vcmllbnRhdGlvbikgfSB9LAogICAgeyAiaW1hZ2UtcmVuZGVy
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VfZGFzaF9yZW5kZXJpbmcpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25faW1hZ2VfZGFzaF9yZW5kZXJpbmcpIH0gfSwKICAgIHsgImlubGluZS1zaXpl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0NTU1N0eWxlRGVjbGFyYXRpb25faW5saW5lX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9pbmxpbmVfZGFzaF9zaXplKSB9IH0sCiAgICB7ICJpbnNldC1ibG9jayIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2luc2V0X2Rhc2hfYmxvY2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRf
ZGFzaF9ibG9jaykgfSB9LAogICAgeyAiaW5zZXQtYmxvY2stZW5kIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNl
dF9kYXNoX2Jsb2NrX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJpbnNldC1ibG9jay1zdGFydCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfYmxvY2tfZGFzaF9zdGFydCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgImluc2V0
LWlubGluZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lKSB9IH0sCiAgICB7ICJpbnNldC1pbmxpbmUt
ZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmQpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmQpIH0gfSwKICAgIHsg
Imluc2V0LWlubGluZS1zdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5l
X2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFz
aF9zdGFydCkgfSB9LAogICAgeyAianVzdGlmeS1jb250ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
anVzdGlmeV9kYXNoX2NvbnRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNo
X2NvbnRlbnQpIH0gfSwKICAgIHsgImp1c3RpZnktaXRlbXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfaXRlbXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2l0
ZW1zKSB9IH0sCiAgICB7ICJqdXN0aWZ5LXNlbGYiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5
X2Rhc2hfc2VsZiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfc2VsZikgfSB9
LAogICAgeyAibGV0dGVyLXNwYWNpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJfZGFzaF9z
cGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRlcl9kYXNoX3NwYWNpbmcpIH0gfSwK
ICAgIHsgImxpZ2h0aW5nLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdfZGFzaF9j
b2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ19kYXNoX2NvbG9yKSB9IH0sCiAg
ICB7ICJsaW5lLWJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFrKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9icmVhaykgfSB9LAogICAgeyAibGluZS1oZWln
aHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpbmVfZGFzaF9oZWlnaHQpIH0gfSwKICAgIHsgImxpc3Qtc3R5bGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9k
YXNoX3N0eWxlKSB9IH0sCiAgICB7ICJsaXN0LXN0eWxlLWltYWdlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hfaW1hZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlz
dF9kYXNoX3N0eWxlX2Rhc2hfaW1hZ2UpIH0gfSwKICAgIHsgImxpc3Qtc3R5bGUtcG9zaXRpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbiksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbikgfSB9LAogICAg
eyAibGlzdC1zdHlsZS10eXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlX2Rh
c2hfdHlwZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBl
KSB9IH0sCiAgICB7ICJtYXJnaW4tYmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFz
aF9ibG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9jaykgfSB9LAog
ICAgeyAibWFyZ2luLWJsb2NrLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Js
b2NrX2Rhc2hfZW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rh
c2hfZW5kKSB9IH0sCiAgICB7ICJtYXJnaW4tYmxvY2stc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgIm1hcmdpbi1ib3R0b20iLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luX2Rhc2hfYm90dG9tKSB9IH0sCiAgICB7ICJtYXJnaW4taW5saW5lIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbl9kYXNoX2lubGluZSkgfSB9LAogICAgeyAibWFyZ2luLWlubGluZS1lbmQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJtYXJnaW4taW5s
aW5lLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQp
IH0gfSwKICAgIHsgIm1hcmdpbi1sZWZ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hf
bGVmdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0KSB9IH0sCiAgICB7
ICJtYXJnaW4tcmlnaHQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCkgfSB9LAogICAgeyAibWFyZ2lu
LXRvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3RvcCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5fZGFzaF90b3ApIH0gfSwKICAgIHsgIm1hcmtlci1lbmQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9lbmQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2Vy
X2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJtYXJrZXItbWlkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
a2VyX2Rhc2hfbWlkKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX21pZCkgfSB9
LAogICAgeyAibWFya2VyLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3Rh
cnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsg
Im1hc2stdHlwZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlKSB9IH0sCiAgICB7ICJtYXRoLXN0eWxlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWF0aF9kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
dGhfZGFzaF9zdHlsZSkgfSB9LAogICAgeyAibWF4LWJsb2NrLXNpemUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4
X2Rhc2hfYmxvY2tfZGFzaF9zaXplKSB9IH0sCiAgICB7ICJtYXgtaGVpZ2h0Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF4X2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNo
X2hlaWdodCkgfSB9LAogICAgeyAibWF4LWlubGluZS1zaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bWF4X2Rhc2hfaW5saW5lX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFz
aF9pbmxpbmVfZGFzaF9zaXplKSB9IH0sCiAgICB7ICJtYXgtd2lkdGgiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhfZGFzaF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF93aWR0
aCkgfSB9LAogICAgeyAibWluLWJsb2NrLXNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFz
aF9ibG9ja19kYXNoX3NpemUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfYmxvY2tf
ZGFzaF9zaXplKSB9IH0sCiAgICB7ICJtaW4taGVpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWlu
X2Rhc2hfaGVpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2hlaWdodCkgfSB9
LAogICAgeyAibWluLWlubGluZS1zaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfaW5s
aW5lX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9pbmxpbmVfZGFz
aF9zaXplKSB9IH0sCiAgICB7ICJtaW4td2lkdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFz
aF93aWR0aCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93aWR0aCkgfSB9LAogICAg
eyAibWl4LWJsZW5kLW1vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhfZGFzaF9ibGVuZF9kYXNo
X21vZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlKSB9
IH0sCiAgICB7ICJvYmplY3QtZml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfZml0
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVjdF9kYXNoX2ZpdCkgfSB9LAogICAgeyAib2Jq
ZWN0LXBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfcG9zaXRpb24pLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfcG9zaXRpb24pIH0gfSwKICAgIHsgIm91
dGxpbmUtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfY29sb3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yKSB9IH0sCiAgICB7ICJvdXRsaW5l
LW9mZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZzZXQpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX29mZnNldCkgfSB9LAogICAgeyAib3V0bGluZS1z
dHlsZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9zdHlsZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfc3R5bGUpIH0gfSwKICAgIHsgIm91dGxpbmUtd2lkdGgi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fb3V0bGluZV9kYXNoX3dpZHRoKSB9IH0sCiAgICB7ICJvdmVyZmxvdy13cmFwIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF93cmFwKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X292ZXJmbG93X2Rhc2hfd3JhcCkgfSB9LAogICAgeyAib3ZlcmZsb3cteCIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX292ZXJmbG93X2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19k
YXNoX3gpIH0gfSwKICAgIHsgIm92ZXJmbG93LXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxv
d19kYXNoX3kpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF95KSB9IH0sCiAg
ICB7ICJvdmVyc2Nyb2xsLWJlaGF2aW9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbF9k
YXNoX2JlaGF2aW9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhh
dmlvcikgfSB9LAogICAgeyAib3ZlcnNjcm9sbC1iZWhhdmlvci14Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94KSB9IH0sCiAgICB7ICJvdmVyc2Nyb2xs
LWJlaGF2aW9yLXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3Jf
ZGFzaF95KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9k
YXNoX3kpIH0gfSwKICAgIHsgInBhZGRpbmctYmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRk
aW5nX2Rhc2hfYmxvY2spLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2Nr
KSB9IH0sCiAgICB7ICJwYWRkaW5nLWJsb2NrLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfYmxvY2tfZGFzaF9lbmQpIH0gfSwKICAgIHsgInBhZGRpbmctYmxvY2stc3RhcnQiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCkgfSB9LAogICAgeyAicGFk
ZGluZy1ib3R0b20iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9tKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ib3R0b20pIH0gfSwKICAgIHsgInBhZGRp
bmctaW5saW5lIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZSksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lKSB9IH0sCiAgICB7ICJwYWRkaW5n
LWlubGluZS1lbmQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hf
ZW5kKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQp
IH0gfSwKICAgIHsgInBhZGRpbmctaW5saW5lLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCkgfSB9LAogICAgeyAicGFkZGluZy1sZWZ0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2xlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ19kYXNoX2xlZnQpIH0gfSwKICAgIHsgInBhZGRpbmctcmlnaHQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wYWRkaW5nX2Rhc2hfcmlnaHQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGlu
Z19kYXNoX3JpZ2h0KSB9IH0sCiAgICB7ICJwYWRkaW5nLXRvcCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdfZGFzaF90b3ApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3Rv
cCkgfSB9LAogICAgeyAicGFnZS1icmVhay1hZnRlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2Vf
ZGFzaF9icmVha19kYXNoX2FmdGVyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9i
cmVha19kYXNoX2FmdGVyKSB9IH0sCiAgICB7ICJwYWdlLWJyZWFrLWJlZm9yZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2JlZm9yZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUpIH0gfSwKICAgIHsgInBhZ2UtYnJlYWst
aW5zaWRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hfaW5zaWRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZSkgfSB9LAog
ICAgeyAicGFpbnQtb3JkZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludF9kYXNoX29yZGVyKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50X2Rhc2hfb3JkZXIpIH0gfSwKICAgIHsgInBlcnNw
ZWN0aXZlLW9yaWdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2lu
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luKSB9IH0sCiAg
ICB7ICJwZXJzcGVjdGl2ZS1vcmlnaW4teCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZl
X2Rhc2hfb3JpZ2luX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9k
YXNoX29yaWdpbl9kYXNoX3gpIH0gfSwKICAgIHsgInBlcnNwZWN0aXZlLW9yaWdpbi15Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95KSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeSkgfSB9LAogICAgeyAi
cGxhY2UtY29udGVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfY29udGVudCksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2NvbnRlbnQpIH0gfSwKICAgIHsgInBsYWNl
LWl0ZW1zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9pdGVtcyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2l0ZW1zKSB9IH0sCiAgICB7ICJwbGFjZS1zZWxmIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9zZWxmKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bs
YWNlX2Rhc2hfc2VsZikgfSB9LAogICAgeyAicG9pbnRlci1ldmVudHMiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wb2ludGVyX2Rhc2hfZXZlbnRzKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50ZXJf
ZGFzaF9ldmVudHMpIH0gfSwKICAgIHsgInJvdy1nYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3df
ZGFzaF9nYXApLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93X2Rhc2hfZ2FwKSB9IH0sCiAgICB7
ICJzY3JvbGwtYmVoYXZpb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhhdmlv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhhdmlvcikgfSB9LAogICAg
eyAic2Nyb2xsLW1hcmdpbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbiks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW4pIH0gfSwKICAgIHsgInNj
cm9sbC1tYXJnaW4tYmxvY2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5f
ZGFzaF9ibG9jayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFz
aF9ibG9jaykgfSB9LAogICAgeyAic2Nyb2xsLW1hcmdpbi1ibG9jay1lbmQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZCkgfSB9
LAogICAgeyAic2Nyb2xsLW1hcmdpbi1ibG9jay1zdGFydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCkgfSB9LAogICAg
eyAic2Nyb2xsLW1hcmdpbi1ib3R0b20iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9t
YXJnaW5fZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFy
Z2luX2Rhc2hfYm90dG9tKSB9IH0sCiAgICB7ICJzY3JvbGwtbWFyZ2luLWlubGluZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZSksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmUpIH0gfSwKICAgIHsgInNj
cm9sbC1tYXJnaW4taW5saW5lLWVuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21h
cmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmQpIH0gfSwKICAgIHsgInNjcm9sbC1tYXJn
aW4taW5saW5lLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsgInNjcm9sbC1tYXJnaW4t
bGVmdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2xlZnQpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdCkgfSB9LAog
ICAgeyAic2Nyb2xsLW1hcmdpbi1yaWdodCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X21hcmdpbl9kYXNoX3JpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21h
cmdpbl9kYXNoX3JpZ2h0KSB9IH0sCiAgICB7ICJzY3JvbGwtbWFyZ2luLXRvcCIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3RvcCksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3ApIH0gfSwKICAgIHsgInNjcm9sbC1wYWRk
aW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZyksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nKSB9IH0sCiAgICB7ICJzY3JvbGwtcGFkZGlu
Zy1ibG9jayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9j
ayksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2sp
IH0gfSwKICAgIHsgInNjcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmQpIH0gfSwKICAg
IHsgInNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
X2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQpIH0gfSwKICAgIHsg
InNjcm9sbC1wYWRkaW5nLWJvdHRvbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3Bh
ZGRpbmdfZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFk
ZGluZ19kYXNoX2JvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsLXBhZGRpbmctaW5saW5lIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lubGluZSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lKSB9IH0sCiAgICB7
ICJzY3JvbGwtcGFkZGluZy1pbmxpbmUtZW5kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kKSB9IH0sCiAgICB7ICJzY3Jv
bGwtcGFkZGluZy1pbmxpbmUtc3RhcnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9w
YWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0KSB9IH0sCiAgICB7ICJzY3Jv
bGwtcGFkZGluZy1sZWZ0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19k
YXNoX2xlZnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2xlZnQpIH0gfSwKICAgIHsgInNjcm9sbC1wYWRkaW5nLXJpZ2h0Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0KSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9yaWdodCkgfSB9LAogICAgeyAic2Nyb2xsLXBhZGRp
bmctdG9wIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfdG9wKSB9IH0s
CiAgICB7ICJzY3JvbGwtc25hcC1hbGlnbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF9hbGlnbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFw
X2Rhc2hfYWxpZ24pIH0gfSwKICAgIHsgInNjcm9sbC1zbmFwLW1hcmdpbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW4pLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbikgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAt
bWFyZ2luLWJvdHRvbSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9t
YXJnaW5fZGFzaF9ib3R0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25h
cF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbSkgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAtbWFyZ2lu
LWxlZnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rh
c2hfbGVmdCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFy
Z2luX2Rhc2hfbGVmdCkgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAtbWFyZ2luLXJpZ2h0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9y
aWdodCkgfSB9LAogICAgeyAic2Nyb2xsLXNuYXAtbWFyZ2luLXRvcCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3ApLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3RvcCkgfSB9LAogICAg
eyAic2Nyb2xsLXNuYXAtc3RvcCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBf
ZGFzaF9zdG9wKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9z
dG9wKSB9IH0sCiAgICB7ICJzY3JvbGwtc25hcC10eXBlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfc25hcF9kYXNoX3R5cGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfc25hcF9kYXNoX3R5cGUpIH0gfSwKICAgIHsgInNoYXBlLWltYWdlLXRocmVzaG9sZCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGQpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9pbWFnZV9kYXNoX3RocmVzaG9sZCkgfSB9LAogICAg
eyAic2hhcGUtbWFyZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW4pLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW4pIH0gfSwKICAgIHsgInNoYXBl
LW91dHNpZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX291dHNpZGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9vdXRzaWRlKSB9IH0sCiAgICB7ICJzaGFwZS1yZW5k
ZXJpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX3JlbmRlcmluZyksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX3JlbmRlcmluZykgfSB9LAogICAgeyAic3BlYWstYXMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3NwZWFrX2Rhc2hfYXMpIH0gfSwKICAgIHsgInN0b3AtY29sb3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdG9wX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcF9kYXNoX2NvbG9y
KSB9IH0sCiAgICB7ICJzdG9wLW9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rhc2hf
b3BhY2l0eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rhc2hfb3BhY2l0eSkgfSB9LAog
ICAgeyAic3Ryb2tlLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfY29sb3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgInN0
cm9rZS1kYXNoYXJyYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNoYXJyYXkp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFycmF5KSB9IH0sCiAgICB7
ICJzdHJva2UtZGFzaG9mZnNldCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hv
ZmZzZXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaG9mZnNldCkgfSB9
LAogICAgeyAic3Ryb2tlLWxpbmVjYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9s
aW5lY2FwKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVjYXApIH0gfSwK
ICAgIHsgInN0cm9rZS1saW5lam9pbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xp
bmVqb2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luKSB9IH0s
CiAgICB7ICJzdHJva2UtbWl0ZXJsaW1pdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X21pdGVybGltaXQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbWl0ZXJsaW1p
dCkgfSB9LAogICAgeyAic3Ryb2tlLW9wYWNpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2Vf
ZGFzaF9vcGFjaXR5KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX29wYWNpdHkp
IH0gfSwKICAgIHsgInN0cm9rZS13aWR0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X3dpZHRoKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX3dpZHRoKSB9IH0sCiAg
ICB7ICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRl
ZF9kYXNoX2NvbG9yX2Rhc2hfc2NoZW1lcyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdXBwb3J0
ZWRfZGFzaF9jb2xvcl9kYXNoX3NjaGVtZXMpIH0gfSwKICAgIHsgInRhYi1zaXplIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGFiX2Rhc2hfc2l6ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJfZGFz
aF9zaXplKSB9IH0sCiAgICB7ICJ0YWJsZS1sYXlvdXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJs
ZV9kYXNoX2xheW91dCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZV9kYXNoX2xheW91dCkg
fSB9LAogICAgeyAidGV4dC1hbGlnbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbGln
biksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYWxpZ24pIH0gfSwKICAgIHsgInRl
eHQtYW5jaG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FuY2hvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYW5jaG9yKSB9IH0sCiAgICB7ICJ0ZXh0LWRlY29yYXRp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbiksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbikgfSB9LAogICAgeyAidGV4dC1kZWNvcmF0
aW9uLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9j
b2xvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2Nv
bG9yKSB9IH0sCiAgICB7ICJ0ZXh0LWRlY29yYXRpb24tbGluZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfbGluZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUpIH0gfSwKICAgIHsgInRleHQtZGVjb3JhdGlv
bi1za2lwIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9za2lw
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCkg
fSB9LAogICAgeyAidGV4dC1kZWNvcmF0aW9uLXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25fZGFzaF9zdHlsZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJ0ZXh0LWRlY29yYXRpb24t
dGhpY2tuZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF90
aGlja25lc3MpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFz
aF90aGlja25lc3MpIH0gfSwKICAgIHsgInRleHQtZW1waGFzaXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZW1waGFzaXMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2Vt
cGhhc2lzKSB9IH0sCiAgICB7ICJ0ZXh0LWVtcGhhc2lzLWNvbG9yIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3IpIH0gfSwKICAgIHsgInRleHQtZW1waGFzaXMt
cG9zaXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3Np
dGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3Np
dGlvbikgfSB9LAogICAgeyAidGV4dC1lbXBoYXNpcy1zdHlsZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlKSB9IH0sCiAgICB7ICJ0ZXh0LWluZGVudCIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9pbmRlbnQpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX2luZGVudCkgfSB9LAogICAgeyAidGV4dC1vcmllbnRhdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHRfZGFzaF9vcmllbnRhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfb3JpZW50YXRpb24pIH0gfSwKICAgIHsgInRleHQtb3ZlcmZsb3ciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfb3ZlcmZsb3cpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX292ZXJmbG93KSB9IH0sCiAgICB7ICJ0ZXh0LXJlbmRlcmluZyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRfZGFzaF9yZW5kZXJpbmcpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX3JlbmRlcmluZykgfSB9LAogICAgeyAidGV4dC1zaGFkb3ciLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfc2hhZG93KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9zaGFk
b3cpIH0gfSwKICAgIHsgInRleHQtdHJhbnNmb3JtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX3RyYW5zZm9ybSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdHJhbnNmb3Jt
KSB9IH0sCiAgICB7ICJ0ZXh0LXVuZGVybGluZS1vZmZzZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfb2Zmc2V0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQpIH0gfSwKICAgIHsgInRleHQtdW5kZXJsaW5l
LXBvc2l0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bv
c2l0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9w
b3NpdGlvbikgfSB9LAogICAgeyAidG91Y2gtYWN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG91
Y2hfZGFzaF9hY3Rpb24pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdG91Y2hfZGFzaF9hY3Rpb24p
IH0gfSwKICAgIHsgInRyYW5zZm9ybS1ib3giLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1f
ZGFzaF9ib3gpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfYm94KSB9IH0s
CiAgICB7ICJ0cmFuc2Zvcm0tb3JpZ2luIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rh
c2hfb3JpZ2luKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbikg
fSB9LAogICAgeyAidHJhbnNmb3JtLW9yaWdpbi14Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1f
ZGFzaF9vcmlnaW5fZGFzaF94KSB9IH0sCiAgICB7ICJ0cmFuc2Zvcm0tb3JpZ2luLXkiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3kpIH0gfSwKICAgIHsgInRyYW5z
Zm9ybS1vcmlnaW4teiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3opLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hf
eikgfSB9LAogICAgeyAidHJhbnNmb3JtLXN0eWxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtX2Rhc2hfc3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5
bGUpIH0gfSwKICAgIHsgInRyYW5zaXRpb24tZGVsYXkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFu
c2l0aW9uX2Rhc2hfZGVsYXkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNo
X2RlbGF5KSB9IH0sCiAgICB7ICJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25fZGFzaF9kdXJhdGlvbikgfSB9LAogICAgeyAidHJhbnNpdGlvbi1wcm9wZXJ0eSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nv
ciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0eSksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHkpIH0gfSwKICAgIHsgInRyYW5zaXRpb24t
dGltaW5nLWZ1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmli
dXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX3RpbWlu
Z19kYXNoX2Z1bmN0aW9uKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF90
aW1pbmdfZGFzaF9mdW5jdGlvbikgfSB9LAogICAgeyAidW5pY29kZS1iaWRpIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdW5pY29kZV9kYXNoX2JpZGkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29k
ZV9kYXNoX2JpZGkpIH0gfSwKICAgIHsgInVuaWNvZGUtcmFuZ2UiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl91bmljb2RlX2Rhc2hfcmFuZ2UpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZV9kYXNo
X3JhbmdlKSB9IH0sCiAgICB7ICJ2ZWN0b3ItZWZmZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVj
dG9yX2Rhc2hfZWZmZWN0KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3Rvcl9kYXNoX2VmZmVj
dCkgfSB9LAogICAgeyAidmVydGljYWwtYWxpZ24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZXJ0aWNh
bF9kYXNoX2FsaWduKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ24p
IH0gfSwKICAgIHsgIndoaXRlLXNwYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFzaF9z
cGFjZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZV9kYXNoX3NwYWNlKSB9IH0sCiAgICB7
ICJ3aWxsLWNoYW5nZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxfZGFzaF9jaGFuZ2UpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2lsbF9kYXNoX2NoYW5nZSkgfSB9LAogICAgeyAid29yZC1icmVh
ayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9icmVhayksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93b3JkX2Rhc2hfYnJlYWspIH0gfSwKICAgIHsgIndvcmQtc3BhY2luZyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dvcmRfZGFzaF9zcGFjaW5nKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRf
ZGFzaF9zcGFjaW5nKSB9IH0sCiAgICB7ICJ3b3JkLXdyYXAiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
b3JkX2Rhc2hfd3JhcCksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rhc2hfd3JhcCkgfSB9
LAogICAgeyAid3JpdGluZy1tb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ19kYXNoX21v
ZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ19kYXNoX21vZGUpIH0gfSwKICAgIHsg
InotaW5kZXgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96X2Rhc2hfaW5kZXgpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fel9kYXNoX2luZGV4KSB9IH0sCiAgICB7ICJlcHViQ2FwdGlvblNpZGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9lcHViQ2FwdGlvblNpZGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YkNhcHRpb25TaWRlKSB9IH0sCiAgICB7ICJlcHViSHlwaGVucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9u
X2VwdWJIeXBoZW5zKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJIeXBoZW5zKSB9IH0sCiAg
ICB7ICJlcHViVGV4dENvbWJpbmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dENvbWJpbmUp
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRDb21iaW5lKSB9IH0sCiAgICB7ICJlcHVi
VGV4dEVtcGhhc2lzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpcyksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzKSB9IH0sCiAgICB7ICJlcHViVGV4dEVt
cGhhc2lzQ29sb3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUp
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzQ29sb3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpc0NvbG9yKSB9IH0sCiAgICB7ICJl
cHViVGV4dEVtcGhhc2lzU3R5bGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01B
dHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lz
U3R5bGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpc1N0eWxlKSB9IH0s
CiAgICB7ICJlcHViVGV4dE9yaWVudGF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRP
cmllbnRhdGlvbiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dE9yaWVudGF0aW9uKSB9
IH0sCiAgICB7ICJlcHViVGV4dFRyYW5zZm9ybSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0
VHJhbnNmb3JtKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtKSB9IH0s
CiAgICB7ICJlcHViV29yZEJyZWFrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YldvcmRCcmVhayks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV29yZEJyZWFrKSB9IH0sCiAgICB7ICJlcHViV3Jp
dGluZ01vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV3JpdGluZ01vZGUpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZXB1YldyaXRpbmdNb2RlKSB9IH0sCiAgICB7ICJpdGVtIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc0NTU1N0eWxl
RGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9pdGVtKSwgKGludHB0cl90KSAoMSkgfSB9LAog
ICAgeyAiZ2V0UHJvcGVydHlWYWx1ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25fZ2V0UHJvcGVydHlWYWx1ZSksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgIHsgImdldFBy
b3BlcnR5UHJpb3JpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dl
dFByb3BlcnR5UHJpb3JpdHkpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICB7ICJzZXRQcm9wZXJ0
eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fc2V0UHJvcGVydHkpLCAo
aW50cHRyX3QpICgyKSB9IH0sCiAgICB7ICJyZW1vdmVQcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNDU1NTdHlsZURlY2xh
cmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fcmVtb3ZlUHJvcGVydHkpLCAoaW50cHRyX3QpICgxKSB9
IH0sCiAgICB7ICJnZXRQcm9wZXJ0eVNob3J0aGFuZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNDU1NTdHlsZURlY2xhcmF0aW9uUHJv
dG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlTaG9ydGhhbmQpLCAoaW50cHRyX3QpICgwKSB9IH0s
CiAgICB7ICJpc1Byb3BlcnR5SW1wbGljaXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlw
ZUZ1bmN0aW9uX2lzUHJvcGVydHlJbXBsaWNpdCksIChpbnRwdHJfdCkgKDApIH0gfSwKICAgIHsg
ImdldFByb3BlcnR5Q1NTVmFsdWUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0
aW9uX2dldFByb3BlcnR5Q1NTVmFsdWUpLCAoaW50cHRyX3QpICgxKSB9IH0sCn07Cgpjb25zdCBD
bGFzc0luZm8gSlNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJDU1NT
dHlsZURlY2xhcmF0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGUpIH07Cgp2b2lkIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQp7CiAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0s
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6aW5mbygpLCBKU0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogICAgYm9vbCBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9w
ZXJ0aWVzID0gZmFsc2U7CiAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLmFz
cGVjdFJhdGlvRW5hYmxlZCkgewogICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMg
PSB0cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJhc3BlY3RSYXRpbyIpLCBzdHJs
ZW4oImFzcGVjdFJhdGlvIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAg
ICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9CiAg
ICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLm92ZXJzY3JvbGxCZWhhdmlvckVu
YWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAg
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigib3ZlcnNjcm9sbEJlaGF2aW9yIiksIHN0cmxlbigi
b3ZlcnNjcm9sbEJlaGF2aW9yIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29w
ZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsK
ICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9
CiAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLm92ZXJzY3JvbGxCZWhhdmlv
ckVuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigib3ZlcnNjcm9sbEJlaGF2aW9yWCIpLCBzdHJs
ZW4oIm92ZXJzY3JvbGxCZWhhdmlvclgiKSk7CiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOwogICAgICAgIERlbGV0ZVByb3BlcnR5U2xvdCBzbG90OwogICAgICAgIEpTT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsK
ICAgIH0KICAgIGlmICghanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkub3ZlcnNjcm9sbEJl
aGF2aW9yRW5hYmxlZCkgewogICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0
cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJvdmVyc2Nyb2xsQmVoYXZpb3JZIiks
IHN0cmxlbigib3ZlcnNjcm9sbEJlaGF2aW9yWSIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7CiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmpl
Y3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogICAgfQogICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5jc3NJbmRp
dmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1
bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigicm90
YXRlIiksIHN0cmxlbigicm90YXRlIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVT
Y29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxl
KTsKICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAg
ICB9CiAgICBpZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLmNzc0luZGl2aWR1YWxU
cmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCkgewogICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVBy
b3BlcnRpZXMgPSB0cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJzY2FsZSIpLCBz
dHJsZW4oInNjYWxlIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9CiAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLkNTU09NVmlld1Ntb290aFNjcm9sbGlu
Z0VuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVzID0gdHJ1ZTsK
ICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigic2Nyb2xsQmVoYXZpb3IiKSwgc3RybGVuKCJz
Y3JvbGxCZWhhdmlvciIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2Nv
cGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAg
ICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgfQogICAg
aWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5jc3NJbmRpdmlkdWFsVHJhbnNmb3Jt
UHJvcGVydGllc0VuYWJsZWQpIHsKICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0aWVz
ID0gdHJ1ZTsKICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigidHJhbnNsYXRlIiksIHN0cmxl
bigidHJhbnNsYXRlIikpOwogICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKICAgICAg
ICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkodGhpcywgZ2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICB9CiAgICBp
ZiAoIWpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLmFzcGVjdFJhdGlvRW5hYmxlZCkgewog
ICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJhc3BlY3QtcmF0aW8iKSwgc3RybGVuKCJhc3BlY3QtcmF0aW8iKSk7
CiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwogICAgICAgIERlbGV0ZVByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxP
YmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgIH0KICAgIGlmICghanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNldHRpbmdzVmFsdWVzKCkub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCkgewogICAgICAgIGhh
c0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOwogICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJvdmVyc2Nyb2xsLWJlaGF2aW9yIiksIHN0cmxlbigib3ZlcnNjcm9sbC1iZWhhdmlv
ciIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpE
ZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAgRGVsZXRlUHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgfQogICAgaWYgKCFqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkKSB7CiAgICAg
ICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIm92ZXJzY3JvbGwtYmVoYXZpb3IteCIpLCBzdHJsZW4oIm92ZXJzY3JvbGwt
YmVoYXZpb3IteCIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUo
dm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CiAgICAgICAg
RGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgfQogICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVk
KSB7CiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oIm92ZXJzY3JvbGwtYmVoYXZpb3IteSIpLCBzdHJsZW4oIm92
ZXJzY3JvbGwtYmVoYXZpb3IteSIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2Nv
cGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7
CiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
fQogICAgaWYgKCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5DU1NPTVZpZXdTbW9vdGhT
Y3JvbGxpbmdFbmFibGVkKSB7CiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9
IHRydWU7CiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInNjcm9sbC1iZWhhdmlvciIpLCBz
dHJsZW4oInNjcm9sbC1iZWhhdmlvciIpKTsKICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7CiAgICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgfQogICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCkt
PmlzRGljdGlvbmFyeSgpKQogICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9i
amVjdCgpLT5hcnJheVByb3RvdHlwZSgpLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVOYW1lKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgIEpTQ19UT19TVFJJTkdf
VEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwp9Cgpjb25zdCBDbGFzc0luZm8gSlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpzX2luZm8gPSB7ICJDU1NTdHlsZURlY2xhcmF0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NTU1N0eWxlRGVjbGFy
YXRpb24pIH07CgpKU0NTU1N0eWxlRGVjbGFyYXRpb246OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVm
PENTU1N0eWxlRGVjbGFyYXRpb24+JiYgaW1wbCkKICAgIDogSlNET01XcmFwcGVyPENTU1N0eWxl
RGVjbGFyYXRpb24+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQp7Cn0K
CnZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCnsKICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CgogICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwg
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMg
W0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xh
c3NlcyBBY3RpdmVET01PYmplY3QuIik7Cgp9CgpKU09iamVjdCogSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQp7CiAgICByZXR1cm4gSlNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlOjpjcmVhdGUo
dm0sICZnbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBl
KCkpKTsKfQoKSlNPYmplY3QqIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvdG90eXBlKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKewogICAgcmV0dXJuIGdldERPTVBy
b3RvdHlwZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+KHZtLCBnbG9iYWxPYmplY3QpOwp9CgpKU1Zh
bHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQp7CiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNDU1NTdHlsZURlY2xhcmF0aW9uRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cn0KCnZvaWQgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQp7CiAgICBKU0NTU1N0eWxlRGVj
bGFyYXRpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24q
PihjZWxsKTsKICAgIHRoaXNPYmplY3QtPkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6fkpTQ1NTU3R5
bGVEZWNsYXJhdGlvbigpOwp9Cgpib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCnsK
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2Jq
ZWN0KTsKICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
aWYgKGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAg
ICAgICAgICAgYXV0byB2YWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgICAg
ICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIHZhbHVlKTsKICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3Qob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwp9
Cgpib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgdW5z
aWduZWQgaW5kZXgsIFByb3BlcnR5U2xvdCYgc2xvdCkKewogICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihvYmplY3QpOwogICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgaWYgKExJS0VMWShpbmRleCA8
PSBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+d3Jh
cHBlZCgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgIGF1dG8gdmFsdWUgPSB0b0pTPElETERPTVN0
cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4KSk7CiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgdmFsdWUpOwogICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
bmRleCwgc2xvdCk7Cn0KCnZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZSBtb2RlKQp7CiAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihv
YmplY3QpOwogICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGluZm8oKSk7CiAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5n
dGgoKTsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbSh2bSwgaSkpOwogICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
LCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKfQoKdGVtcGxhdGU8
PiBpbmxpbmUgSlNDU1NTdHlsZURlY2xhcmF0aW9uKiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQp7CiAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0NTU1N0
eWxlRGVjbGFyYXRpb24qPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwp9Cgp0ZW1wbGF0ZTw+IGlubGluZSBKU0NTU1N0eWxlRGVj
bGFyYXRpb24qIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpjYXN0KEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKewog
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25Db25zdHJ1Y3RvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9u
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkKICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlND
U1NTdHlsZURlY2xhcmF0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9i
YWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmNzc1RleHQoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jc3NUZXh0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2Nzc1RleHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjc3NUZXh0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRDc3NUZXh0KFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzVGV4dCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NUZXh0U2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjc3NU
ZXh0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGVu
Z3RoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVbnNpZ25lZExvbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubGVuZ3RoKCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGVuZ3RoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xlbmd0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxlbmd0
aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhcmVu
dFJ1bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETE51bGxhYmxlPElETEludGVyZmFj
ZTxDU1NSdWxlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLnBhcmVudFJ1bGUoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYXJlbnRSdWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhcmVudFJ1bGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJw
YXJlbnRSdWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY3NzRmxvYXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmNzc0Zsb2F0KCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY3NzRmxvYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fY3NzRmxvYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjc3NGbG9hdCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nzc0Zsb2F0U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0Q3NzRmxvYXQoV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jc3NGbG9hdFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY3NzRmxvYXQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZUNv
bG9yRmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBcHBsZUNvbG9y
RmlsdGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9BcHBsZUNvbG9yRmlsdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX0FwcGxlQ29sb3JGaWx0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJBcHBsZUNvbG9yRmlsdGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVD
b2xvckZpbHRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFwcGxlQ29sb3JGaWx0ZXIsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVDb2xvckZpbHRlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZUNv
bG9yRmlsdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJBcHBsZUNvbG9yRmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25TdHlsZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25TdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblN0
eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiQXBwbGVQYXlCdXR0b25TdHlsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uU3R5bGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlBcHBsZVBheUJ1dHRvblN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25T
dHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiQXBwbGVQYXlCdXR0b25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25UeXBlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblR5cGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25UeXBlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiQXBwbGVQYXlCdXR0b25UeXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVQYXlCdXR0b25UeXBlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5QXBwbGVQYXlCdXR0b25UeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX0FwcGxlUGF5QnV0dG9uVHlwZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9BcHBsZVBheUJ1dHRvblR5cGVTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkFwcGxlUGF5
QnV0dG9uVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX0FwcGxlVHJhaWxpbmdXb3JkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlBcHBsZVRyYWlsaW5nV29yZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmRHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJB
cHBsZVRyYWlsaW5nV29yZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX0FwcGxlVHJhaWxpbmdXb3JkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QXBwbGVUcmFpbGluZ1dv
cmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fQXBwbGVUcmFp
bGluZ1dvcmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fQXBwbGVUcmFpbGluZ1dvcmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkFwcGxlVHJhaWxpbmdXb3JkIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YkNhcHRpb25TaWRlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YkNhcHRpb25T
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9u
U2lkZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIkVwdWJDYXB0aW9uU2lkZSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJDYXB0aW9uU2lkZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUNhcHRpb25TaWRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX0VwdWJDYXB0aW9uU2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViQ2FwdGlvblNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkVwdWJDYXB0aW9uU2lkZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJIeXBoZW5z
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlw
aGVucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViSHlwaGVu
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIkVwdWJIeXBoZW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1Ykh5cGhlbnNTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRI
eXBoZW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJI
eXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX0VwdWJIeXBoZW5zU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJFcHViSHlwaGVucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0Q29tYmluZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0Q29tYmluZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dENvbWJpbmVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJFcHViVGV4dENvbWJpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dENvbWJpbmVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0Q29tYmluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9FcHViVGV4dENvbWJpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRDb21iaW5lU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJFcHViVGV4dENvbWJpbmUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhh
c2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X0VwdWJUZXh0RW1waGFzaXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRFbXBoYXNpc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIkVwdWJUZXh0RW1waGFzaXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVt
cGhhc2lzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRF
bXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiRXB1YlRleHRFbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXNDb2xvckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXND
b2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVt
cGhhc2lzQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJFcHViVGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhh
c2lzQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzQ29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRFbXBoYXNpc0NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJFcHViVGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dEVtcGhhc2lzU3R5
bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c1N0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc1N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiRXB1YlRl
eHRFbXBoYXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fRXB1YlRleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YlRleHRFbXBoYXNpc1N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0RW1waGFzaXNTdHlsZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiRXB1YlRleHRFbXBo
YXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YlRleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dE9yaWVudGF0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0T3JpZW50YXRpb25HZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJFcHViVGV4dE9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRPcmllbnRhdGlvblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFRleHRPcmllbnRhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9FcHViVGV4dE9yaWVudGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJUZXh0T3JpZW50YXRpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkVwdWJUZXh0
T3JpZW50YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dFRyYW5zZm9ybUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGV4dFRyYW5zZm9ybSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fRXB1YlRleHRUcmFuc2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fRXB1YlRleHRUcmFuc2Zvcm1HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJFcHVi
VGV4dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX0VwdWJUZXh0VHJhbnNmb3JtU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViVGV4dFRyYW5zZm9y
bSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9FcHViVGV4dFRyYW5zZm9ybVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiRXB1YlRleHRUcmFuc2Zvcm0iKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViV29yZEJyZWFrR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWssIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fRXB1YldvcmRCcmVha0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIkVwdWJXb3JkQnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9FcHViV29yZEJyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V29yZEJyZWFrLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXb3JkQnJlYWssIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
RXB1YldvcmRCcmVha1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiRXB1YldvcmRCcmVhayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXcml0aW5nTW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX0VwdWJXcml0aW5nTW9kZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViV3JpdGluZ01vZGVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJFcHViV3JpdGluZ01vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9FcHViV3JpdGluZ01vZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9FcHViV3JpdGluZ01vZGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fRXB1YldyaXRpbmdNb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJFcHViV3JpdGluZ01vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9JbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnRlcm5hbFRleHRBdXRvc2l6aW5n
U3RhdHVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9JbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX0ludGVybmFsVGV4dEF1dG9zaXppbmdTdGF0dXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJJbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0YXR1
c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUludGVybmFsVGV4dEF1dG9zaXppbmdTdGF0dXMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fSW50ZXJuYWxUZXh0QXV0b3NpemluZ1N0
YXR1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9JbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJJbnRlcm5hbFRleHRBdXRvc2l6aW5n
U3RhdHVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QWxpZ25Db250ZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bGlnbkNvbnRlbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFsaWduQ29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnbkNvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRB
bGlnbkNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRBbGlnbkNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25Db250ZW50
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFsaWduQ29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QWxpZ25Db250ZW50Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtc0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25JdGVtcykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtcywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnbkl0ZW1z
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QWxpZ25JdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWduSXRlbXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlBbGlnbkl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEFsaWduSXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25JdGVtc1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QWxpZ25JdGVtcyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsaWdu
U2VsZkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRB
bGlnblNlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
QWxpZ25TZWxmR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QWxpZ25TZWxmIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWxpZ25TZWxmU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QWxpZ25TZWxmLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEFsaWduU2VsZiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbGlnblNlbGZTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFsaWduU2VsZiIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFs
dEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWx0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QWx0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0QWx0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0QWx0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWx0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbHRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFsdCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFu
aW1hdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRBbmltYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QW5pbWF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QW5pbWF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25TZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEFuaW1hdGlvbkRlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25EZWxheSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGVsYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRBbmltYXRpb25EZWxheSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkRlbGF5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGVs
YXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uRGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlvbkRlbGF5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25EaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EaXJlY3Rpb25HZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJXZWJraXRBbmltYXRpb25EaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EaXJlY3Rpb25TZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiV2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uRHVyYXRpb25HZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmlt
YXRpb25EdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRBbmltYXRpb25EdXJhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QW5pbWF0aW9uRHVyYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbiwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRp
b25EdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QW5pbWF0aW9uRHVyYXRp
b24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRBbmltYXRpb25GaWxsTW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QW5pbWF0aW9uRmlsbE1vZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0QW5pbWF0aW9uRmlsbE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25GaWxsTW9kZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkZp
bGxNb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJXZWJraXRBbmltYXRpb25GaWxsTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
QW5pbWF0aW9uTmFtZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uTmFtZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QW5pbWF0aW9uTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25OYW1lR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QW5p
bWF0aW9uTmFtZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFuaW1hdGlvbk5hbWVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvbk5h
bWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QW5pbWF0aW9uTmFtZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QW5pbWF0aW9uTmFtZSIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblBsYXlT
dGF0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0
YXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0QW5pbWF0aW9uUGxheVN0YXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uUGxheVN0YXRlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5p
bWF0aW9uUGxheVN0YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRBbmltYXRpb25QbGF5U3RhdGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldl
YmtpdEFuaW1hdGlvblBsYXlTdGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
QW5pbWF0aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFy
YW5jZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5j
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QXBwZWFyYW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRBcHBlYXJhbmNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QXBwZWFyYW5jZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFwcGVh
cmFuY2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEFwcGVhcmFuY2UsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QXBwZWFy
YW5jZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiV2Via2l0QXBwZWFyYW5jZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tkcm9wRmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ryb3BGaWx0ZXIsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ryb3BGaWx0
ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCYWNrZHJvcEZpbHRlciIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tkcm9wRmlsdGVyU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ryb3BGaWx0ZXIsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2Ry
b3BGaWx0ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdEJhY2tkcm9wRmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJh
Y2tmYWNlVmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCYWNrZmFjZVZpc2liaWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCYWNrZmFjZVZpc2liaWxpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
QmFja2ZhY2VWaXNpYmlsaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENsaXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xp
cEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJhY2tncm91bmRDbGlwIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENsaXBTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3Jv
dW5kQ2xpcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0QmFja2dyb3VuZENsaXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
YWNrZ3JvdW5kQ29tcG9zaXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJhY2tncm91bmRDb21wb3NpdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCYWNr
Z3JvdW5kQ29tcG9zaXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRDb21wb3NpdGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCYWNrZ3JvdW5kQ29tcG9z
aXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZE9yaWdpbkdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dy
b3VuZE9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCYWNrZ3JvdW5kT3JpZ2luR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0QmFja2dyb3VuZE9yaWdp
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJhY2tncm91bmRPcmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91
bmRPcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZE9yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0QmFja2dyb3VuZE9yaWdpbiIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJh
Y2tncm91bmRTaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJX
ZWJraXRCYWNrZ3JvdW5kU2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJhY2tncm91bmRTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFj
a2dyb3VuZFNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0QmFja2dyb3VuZFNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0QmFja2dyb3VuZFNpemVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJhY2tncm91
bmRTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyQWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckJsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJv
cmRlckFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm9yZGVyQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCb3JkZXJBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm9yZGVyQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlckNvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZENvbG9yKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJBZnRlckNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckFmdGVyQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJBZnRl
ckNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kQ29sb3Is
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
QWZ0ZXJDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlckNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJBZnRlckNvbG9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVyQWZ0ZXJTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQmxvY2tFbmRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlclN0eWxlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJCbG9ja0VuZFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQWZ0ZXJTdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckFmdGVyV2lk
dGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
QWZ0ZXJXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJB
ZnRlcldpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJBZnRlcldpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckFmdGVyV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJvcmRlckJlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJCZWZvcmUiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJCZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdEJvcmRlckJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZUNvbG9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRl
ckJlZm9yZUNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlckJlZm9yZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyQmVmb3Jl
Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRDb2xv
ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVDb2xvclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm9yZGVyQmVmb3Jl
Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJCZWZvcmVTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVyQmxvY2tTdGFydFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCZWZvcmVTdHlsZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlU3R5bGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVyQmVmb3JlU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlV2lkdGhH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0
aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm9yZGVyQmVmb3JlV2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxv
Y2tTdGFydFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJlZm9yZVdpZHRoU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRv
bUxlZnRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm9yZGVyQm90dG9tTGVmdFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tTGVmdFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbUxl
ZnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1
c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJCb3R0b21SaWdodFJh
ZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJCb3R0b21SaWdo
dFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckVuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVySW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVy
RW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm9yZGVyRW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJFbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdEJvcmRlckVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZENvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kQ29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5k
Q29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJFbmRDb2xvciIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZENvbG9y
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kQ29sb3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9y
ZGVyRW5kQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdEJvcmRlckVuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRW5kU3R5bGVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJF
bmRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJFbmRTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckVuZFN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
RW5kU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRTdHlsZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJFbmRTdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm9yZGVyRW5kU3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJFbmRXaWR0aEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJvcmRlckVuZFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJvcmRlckVuZFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyRW5kV2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJFbmRXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFdpZHRoLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckVuZFdp
ZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlckVuZFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJFbmRXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckZpdEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJGaXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVyRml0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyRml0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyRml0U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlckZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJGaXRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRl
ckZpdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJIb3Jp
em9udGFsU3BhY2luZyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
SG9yaXpvbnRhbFNwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVySW1hZ2VH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRCb3JkZXJJbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJJbWFnZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlckltYWdlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
SW1hZ2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJJbWFnZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3Jk
ZXJJbWFnZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0Qm9yZGVySW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyUmFkaXVzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclJhZGl1c0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlclJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclJhZGl1c1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyUmFkaXVzU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRC
b3JkZXJSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0Qm9yZGVyU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0
YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
cmRlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJTdGFydCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0
Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0
YXJ0Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldl
YmtpdEJvcmRlclN0YXJ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
SW5saW5lU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3JkZXJTdGFydENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0Q29sb3JTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtp
dEJvcmRlclN0YXJ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFN0eWxl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0
YXJ0U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3Rh
cnRTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0U3R5bGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCb3JkZXJTdGFydFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRX
aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3Rh
cnRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm9yZGVyU3RhcnRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJTdGFydFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0Qm9yZGVyU3RhcnRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJ
bmxpbmVTdGFydFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVyU3RhcnRXaWR0aFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
Qm9yZGVyU3RhcnRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcExlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcExlZnRSYWRp
dXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
VG9wTGVmdFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRC
b3JkZXJUb3BMZWZ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJUb3BM
ZWZ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcExlZnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJvcmRlclRvcExlZnRS
YWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0
UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJU
b3BSaWdodFJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0
UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRCb3JkZXJUb3BSaWdodFJh
ZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm9yZGVy
VmVydGljYWxTcGFjaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm9yZGVyVmVydGljYWxTcGFj
aW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGlj
YWxTcGFjaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmdT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEFsaWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ25HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRCb3hBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJveEFsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24sIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94QWxpZ24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94QWxpZ25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveEFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWspKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEJveERlY29yYXRpb25CcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3hEZWNvcmF0aW9uQnJlYWtHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3hE
ZWNvcmF0aW9uQnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3hEZWNvcmF0aW9uQnJlYWtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hE
ZWNvcmF0aW9uQnJlYWssIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERlY29yYXRpb25CcmVha1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Vi
a2l0Qm94RGVjb3JhdGlvbkJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERpcmVjdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hEaXJlY3Rpb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJXZWJraXRCb3hEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hEaXJlY3Rpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRCb3hEaXJlY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveERpcmVjdGlvblNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm94
RGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0Qm94RmxleEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94RmxleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRCb3hGbGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Qm94RmxleCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZs
ZXhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveEZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm94
RmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJveEZsZXhHcm91cEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94RmxleEdyb3VwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hGbGV4R3JvdXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94RmxleEdyb3VwR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0Qm94RmxleEdyb3VwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94RmxleEdyb3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdy
b3VwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eEZsZXhHcm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hGbGV4R3JvdXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveEZsZXhHcm91cCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveExpbmVz
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm94TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Qm94TGluZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRCb3hMaW5lcyIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveExpbmVzU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0Qm94TGluZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94TGluZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveExpbmVzIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94
T3JkaW5hbEdyb3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmRpbmFsR3JvdXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmRpbmFsR3JvdXBHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRCb3hPcmRpbmFsR3JvdXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmRpbmFsR3JvdXBTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hPcmRpbmFsR3JvdXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94T3JkaW5hbEdyb3VwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yZGluYWxHcm91cFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
Qm94T3JkaW5hbEdyb3VwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Qm94T3JpZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmllbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveE9yaWVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hPcmllbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRCb3hPcmllbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRCb3hPcmllbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94T3JpZW50LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEJveE9yaWVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0Qm94T3JpZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UGFja0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UGFjaywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hQYWNrR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0Qm94UGFjayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEJveFBhY2tTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFBhY2ssIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Qm94UGFja1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0Qm94UGFjayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3RHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3QsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94UmVmbGVjdEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIldlYmtpdEJveFJlZmxlY3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hSZWZsZWN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
Qm94UmVmbGVjdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRCb3hSZWZsZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFJlZmxlY3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEJveFJlZmxlY3QiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hTaGFk
b3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Qm94U2hhZG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEJveFNoYWRvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJveFNoYWRvdyIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJveFNoYWRvd1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hTaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2hhZG93U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRC
b3hTaGFkb3ciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRCb3hTaXppbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
eFNpemluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0Qm94U2l6aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEJveFNpemluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEJveFNpemluZyIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEJv
eFNpemluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJveFNpemluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRCb3hTaXppbmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Qm94U2l6aW5nU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRCb3hTaXppbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRDbGlwUGF0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q2xpcFBhdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENsaXBQYXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENsaXBQYXRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q2xpcFBhdGgiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDbGlw
UGF0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBQYXRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENsaXBQYXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENsaXBQYXRoU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDbGlw
UGF0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkF4aXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkF4aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtbkF4aXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQXhpc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdENvbHVt
bkF4aXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRDb2x1bW5BeGlzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpcywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5BeGlzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkF4aXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbkF4aXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0FmdGVyR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5CcmVha0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtbkJyZWFrQWZ0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRDb2x1bW5CcmVha0Fm
dGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Q29sdW1uQnJlYWtBZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1u
QnJlYWtBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDb2x1bW5CcmVha0FmdGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Q29sdW1uQnJlYWtCZWZvcmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrQmVmb3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0JlZm9yZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIldlYmtpdENvbHVtbkJyZWFrQmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQnJlYWtCZWZvcmVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRD
b2x1bW5CcmVha0JlZm9yZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0Q29sdW1uQnJlYWtCZWZvcmUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNp
ZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
Q29sdW1uQnJlYWtJbnNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5CcmVha0luc2lkZVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrSW5zaWRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkJyZWFrSW5zaWRlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRDb2x1bW5CcmVha0luc2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkNvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlDb2x1bW5Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQ291bnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uQ291bnRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRDb2x1bW5Db3VudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkNvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uQ291bnQs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1u
Q291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbkNvdW50Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uRmlsbEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uRmlsbCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uRmls
bCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5G
aWxsR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q29sdW1uRmlsbCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbkZpbGxTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDb2x1bW5GaWxsLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtbkZpbGwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uRmlsbFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Q29sdW1uRmlsbCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENv
bHVtbkdhcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRDb2x1bW5HYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Q29sdW1uR2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q29sdW1uR2FwIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uR2FwU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q29sdW1uR2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdENvbHVtbkdhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5HYXBTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbkdh
cCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtblByb2dyZXNzaW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJXZWJraXRDb2x1bW5Qcm9ncmVzc2lvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblByb2dyZXNzaW9uU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
Q29sdW1uUHJvZ3Jlc3Npb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtblByb2dyZXNzaW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxl
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0Q29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblJ1bGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5SdWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdENvbHVtblJ1bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Q29sdW1uUnVsZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVt
blJ1bGVDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVs
ZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRDb2x1bW5SdWxlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
Q29sdW1uUnVsZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNv
bG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENv
bHVtblJ1bGVDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtblJ1bGVDb2xv
ciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtblJ1bGVTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
dW1uUnVsZVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0Q29sdW1uUnVsZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1u
UnVsZVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdENvbHVtblJ1bGVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlU3R5bGVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtblJ1
bGVTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdENvbHVtblJ1bGVXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sdW1uUnVsZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlV2lkdGgsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVdpZHRoR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0Q29sdW1uUnVsZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uUnVsZVdpZHRoU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uUnVsZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdENvbHVtblJ1bGVXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5SdWxlV2lkdGhTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENv
bHVtblJ1bGVXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENvbHVtblNwYW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUNvbHVtblNwYW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtblNwYW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uU3BhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdENv
bHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRDb2x1bW5TcGFuU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5TcGFuLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtblNwYW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdENvbHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbldpZHRoLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbldpZHRoR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0Q29sdW1uV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5XaWR0aFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVt
bldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dENvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbldpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDb2x1bW5XaWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbnNH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdENvbHVtbnMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q29sdW1uc0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1u
cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDb2x1
bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdENvbHVtbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDdXJzb3JWaXNpYmlsaXR5R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNpYmlsaXR5KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRD
dXJzb3JWaXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEN1cnNvclZpc2liaWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRDdXJzb3JWaXNp
YmlsaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0Q3Vyc29yVmlzaWJpbGl0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxp
dHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Q3Vy
c29yVmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRDdXJzb3JWaXNpYmlsaXR5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRDdXJzb3JWaXNpYmls
aXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0RmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWx0ZXIpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZpbHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRG
aWx0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRGaWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGaWx0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
aWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
RmlsdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEZpbHRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0RmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5RmxleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0RmxleCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZs
ZXhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlGbGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0RmxleCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhCYXNpc0dldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4QmFzaXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEJhc2lz
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0RmxleEJhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEJhc2lzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
RmxleEJhc2lzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEZsZXhCYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4QmFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEZsZXhCYXNpcyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhEaXJlY3Rp
b25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZsZXhEaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0RmxleERpcmVjdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEZsZXhEaXJlY3Rpb24i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRG
bGV4RGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleERpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4RGlyZWN0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dEZsZXhEaXJlY3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdEZsZXhEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4Rmxvd0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhGbG93LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhGbG93R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0RmxleEZsb3ciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRGbGV4Rmxvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhGbG93LCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhGbG93LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEZsZXhGbG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJXZWJraXRGbGV4RmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhHcm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlGbGV4R3JvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdyb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRGbGV4R3JvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEZsZXhHcm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rmxl
eEdyb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdEZsZXhHcm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0RmxleFNocmlua0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5RmxleFNocmluaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFNocmluaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGbGV4U2hyaW5rR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Vi
a2l0RmxleFNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdEZsZXhTaHJpbmtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhTaHJpbmssIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0RmxleFNocmlua1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0RmxleFNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZsZXhXcmFwR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXAsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXBHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRGbGV4V3JhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdEZsZXhXcmFwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleFdyYXAsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0RmxleFdyYXAsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0RmxleFdyYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIldlYmtpdEZsZXhXcmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZ0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIldlYmtpdEZvbnRLZXJuaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0Rm9udEtlcm5pbmdTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRGb250S2VybmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRGb250S2VybmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250S2VybmluZ1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0Rm9udEtlcm5p
bmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRGb250U21vb3RoaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRGb250U21vb3RoaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRGb250U21vb3RoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEZvbnRTbW9vdGhpbmdHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJX
ZWJraXRGb250U21vb3RoaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0Rm9udFNtb290aGluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
bW9vdGhpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0Rm9udFNtb290aGluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRGb250U21vb3RoaW5nU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRGb250U21vb3RoaW5n
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
SHlwaGVuYXRlQ2hhcmFjdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXJH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVDaGFyYWN0
ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRl
TGltaXRBZnRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlw
aGVuYXRlTGltaXRBZnRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXJT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0
ZUxpbWl0QmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRI
eXBoZW5hdGVMaW1pdEJlZm9yZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxpbWl0
QmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRC
ZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEh5cGhlbmF0ZUxpbWl0QmVm
b3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0SHlwaGVuYXRlTGltaXRMaW5lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5hdGVMaW1p
dExpbmVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0
ZUxpbWl0TGluZXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbmF0ZUxp
bWl0TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0SHlwaGVuYXRlTGltaXRMaW5lc1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SHlwaGVuYXRlTGltaXRM
aW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdEh5cGhlbnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5
cGhlbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdEh5cGhlbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0SHlwaGVuc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEh5cGhlbnMiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5zU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRIeXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEh5cGhlbnNTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdEh5cGhlbnMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRJ
bml0aWFsTGV0dGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRJ
bml0aWFsTGV0dGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRJbml0aWFsTGV0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdEluaXRpYWxMZXR0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJr
aXRJbml0aWFsTGV0dGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0SW5pdGlhbExldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxM
ZXR0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
SW5pdGlhbExldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRJbml0aWFsTGV0dGVyU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRJbml0aWFsTGV0dGVyIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SnVz
dGlmeUNvbnRlbnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlD
b250ZW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEp1
c3RpZnlDb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0SnVzdGlmeUNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5Q29udGVudCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5
Q29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5Q29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0SnVzdGlmeUNvbnRlbnQiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5
SXRlbXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtcykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0SnVzdGlmeUl0ZW1zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdEp1c3RpZnlJdGVtc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdEp1c3RpZnlJdGVtcyIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdEp1
c3RpZnlJdGVtc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtcywgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRKdXN0aWZ5SXRlbXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0SnVz
dGlmeUl0ZW1zU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJXZWJraXRKdXN0aWZ5SXRlbXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVBbGlnbkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIldlYmtpdExpbmVBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVBbGlnblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVB
bGlnbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRM
aW5lQWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUFsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRMaW5lQWxpZ24iKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQm94Q29udGFpbkdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW4p
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdExpbmVCb3hDb250YWluLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExpbmVCb3hDb250YWluR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TGluZUJveENv
bnRhaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQm94Q29udGFpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVCb3hD
b250YWluLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdExpbmVCb3hDb250YWluU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRMaW5lQm94Q29udGFpbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVCcmVh
a0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5l
QnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGlu
ZUJyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TGluZUJyZWFrIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUJyZWFrU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGluZUJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExpbmVCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQnJlYWtTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdExpbmVCcmVhayIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVD
bGFtcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1w
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMaW5lQ2xhbXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TGluZUNsYW1wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TGluZUNsYW1wIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUNsYW1w
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExpbmVDbGFtcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lQ2xhbXBTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtp
dExpbmVDbGFtcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdExpbmVHcmlkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRMaW5lR3JpZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRMaW5lR3Jp
ZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dExpbmVHcmlkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUdyaWQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUdyaWQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TGluZUdy
aWRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IldlYmtpdExpbmVHcmlkIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TGluZVNuYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVTbmFwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExp
bmVTbmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TGluZVNuYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMaW5lU25hcCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRM
aW5lU25hcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0TGluZVNuYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRMb2NhbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdExvY2FsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9jYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdExvY2FsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExvY2Fs
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dExvY2FsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRMb2NhbGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9jYWxlU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRM
b2NhbGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRMb2dpY2FsSGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
bG9ja1NpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExv
Z2ljYWxIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRMb2dpY2FsSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmxvY2tTaXplLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxIZWlnaHQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TG9naWNhbEhlaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxXaWR0aEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdp
ZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2lj
YWxXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdExvZ2ljYWxXaWR0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxXaWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlubGluZVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdExvZ2ljYWxXaWR0aFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
TG9naWNhbFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1hcmdpbkJsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldl
YmtpdE1hcmdpbkFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja0VuZCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5B
ZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFyZ2luQWZ0ZXIiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlckNvbGxh
cHNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2VHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5BZnRlckNvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQmVmb3JlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5CZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFyZ2luQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFyZ2luQmVmb3JlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2lu
QmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFy
Z2luQmVmb3JlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJXZWJraXRNYXJnaW5CZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hcmdpbkJlZm9yZUNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
TWFyZ2luQmVmb3JlQ29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJl
Zm9yZUNvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21D
b2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2VHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFyZ2luQm90dG9tQ29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luQ29s
bGFwc2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNv
bGxhcHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1h
cmdpbkNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFyZ2luQ29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xs
YXBzZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5Db2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5Db2xsYXBzZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFyZ2luQ29sbGFwc2Ui
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRN
YXJnaW5FbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGlu
ZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWFyZ2luRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hcmdpbkVuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1hcmdpbkVuZCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdp
bkVuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5FbmQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luRW5k
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJX
ZWJraXRNYXJnaW5FbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXJnaW5TdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWFyZ2luSW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0TWFyZ2luU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXJnaW5TdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGlu
ZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hcmdpblN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXJnaW5TdGFydCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblRv
cENvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Ub3BDb2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9wQ29sbGFwc2VHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hcmdpblRvcENvbGxhcHNlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFyZ2luVG9w
Q29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdE1hcmdpblRvcENvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFzaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFzaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFz
ayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFzayIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tC
b3hJbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0Jv
eEltYWdlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrQm94SW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFza0Jv
eEltYWdlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza0JveEltYWdlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFn
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91dHNl
dEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
T3V0c2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlT3V0c2V0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0TWFza0JveEltYWdlT3V0c2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlT3V0c2V0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlT3V0c2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1h
Z2VPdXRzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZU91dHNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrQm94SW1hZ2VSZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFz
a0JveEltYWdlUmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlUmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlUmVwZWF0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VSZXBlYXRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldl
YmtpdE1hc2tCb3hJbWFnZVJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVNsaWNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveElt
YWdlU2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWFza0JveEltYWdlU2xpY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrQm94SW1hZ2VTbGlj
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tCb3hJbWFnZVNsaWNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU2xpY2Us
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0Jv
eEltYWdlU2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlU2xpY2VTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZVNs
aWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza0JveEltYWdlU291cmNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VTb3Vy
Y2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VT
b3VyY2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlU291cmNl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza0JveEltYWdlU291cmNlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0Jv
eEltYWdlV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIldlYmtpdE1hc2tCb3hJbWFnZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0JveEltYWdlV2lkdGhTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQm94
SW1hZ2VXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiV2Via2l0TWFza0JveEltYWdlV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0TWFza0NsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ2xpcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
bGlwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1h
c2tDbGlwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hc2tDbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXNrQ2xpcCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tDb21wb3NpdGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1h
c2tDb21wb3NpdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza0NvbXBvc2l0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1hc2tDb21wb3NpdGUiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
Q29tcG9zaXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrQ29tcG9zaXRlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1hc2tDb21wb3NpdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tDb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrSW1hZ2VHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0ltYWdlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tJbWFnZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1hc2tJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tJbWFnZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRNYXNrSW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza0ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXNrSW1hZ2UiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrT3Jp
Z2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXNrT3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tPcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrT3JpZ2luIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza09y
aWdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza09yaWdpbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrT3Jp
Z2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJXZWJraXRNYXNrT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25HZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJXZWJraXRNYXNrUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25TZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWFza1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza1Bv
c2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0TWFza1Bvc2l0aW9uWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uWCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25YR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0TWFza1Bvc2l0aW9uWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblhTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tQb3NpdGlvblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uWFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza1Bvc2l0
aW9uWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1hc2tQb3NpdGlvbllHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvblksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1Bvc2l0aW9uWUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdE1hc2tQb3NpdGlvblkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrUG9zaXRpb25ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXNrUG9zaXRpb25ZLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tQb3NpdGlvbllTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdE1hc2tQb3NpdGlv
blkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrUmVwZWF0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNYXNrUmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdE1hc2tSZXBlYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRNYXNrUmVw
ZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TWFza1JlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1JlcGVhdCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRNYXNrUmVwZWF0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJXZWJraXRNYXNrUmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWFza1NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU2l6ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU2l6ZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIldlYmtpdE1hc2tTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0TWFza1NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU2l6
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXNrU2l6ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWFza1NpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNrU291cmNlVHlwZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5cGUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tT
b3VyY2VUeXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1hc2tTb3VyY2VUeXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWFza1NvdXJjZVR5cGUiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXNr
U291cmNlVHlwZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBlLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1hc2tTb3VyY2VUeXBlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1hc2tTb3VyY2VUeXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXNrU291cmNlVHlwZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1heExvZ2ljYWxIZWlnaHRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1heEJsb2NrU2l6ZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4
TG9naWNhbEhlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXhMb2dpY2FsSGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWF4TG9naWNhbEhl
aWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdE1heExvZ2ljYWxIZWlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhCbG9ja1NpemUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNhbEhlaWdo
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRNYXhMb2dpY2FsSGVpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXhMb2dpY2FsSGVpZ2h0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TWF4TG9naWNh
bFdpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhJbmxpbmVTaXpl
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRNYXhMb2dpY2FsV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0TWF4TG9n
aWNhbFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0TWF4TG9naWNhbFdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNYXhMb2dpY2Fs
V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWF4TG9naWNhbFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRNYXhMb2dpY2FsV2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRNaW5Mb2dp
Y2FsSGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNaW5CbG9ja1Np
emUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE1p
bkxvZ2ljYWxIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRNaW5Mb2dpY2FsSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXpl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxv
Z2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0TWluTG9naWNhbEhlaWdodFNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWluTG9naWNhbEhlaWdo
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dE1pbkxvZ2ljYWxXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWlu
SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0TWluTG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldl
YmtpdE1pbkxvZ2ljYWxXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbklubGlu
ZVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
TWluTG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdE1pbkxvZ2ljYWxXaWR0aFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0TWluTG9naWNhbFdp
ZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0TmJzcE1vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5i
c3BNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXROYnNwTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXROYnNwTW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdE5ic3BNb2RlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0TmJzcE1v
ZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXROYnNwTW9kZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
TmJzcE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRPcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcGFj
aXR5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRPcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdE9wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRPcGFjaXR5Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0T3BhY2l0eVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eU9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0T3BhY2l0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcGFjaXR5U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRPcGFjaXR5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0T3JkZXJHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU9yZGVyKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlckdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIldlYmtpdE9yZGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0T3JkZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcmRlciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRlciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRPcmRl
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
V2Via2l0T3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRQYWRkaW5nQWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdBZnRlckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdFBhZGRpbmdBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdBZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9j
a0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
YWRkaW5nQWZ0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRQYWRkaW5nQWZ0ZXIiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5n
QmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tT
dGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0UGFkZGluZ0JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRQYWRkaW5nQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UGFkZGlu
Z0JlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFBhZGRpbmdCZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nQmVm
b3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFBhZGRpbmdCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFBhZGRpbmdCZWZvcmUiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nRW5kR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQ
YWRkaW5nRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFBhZGRpbmdFbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRQYWRkaW5nRW5kIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0VuZFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVBhZGRpbmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGFkZGluZ0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nRW5kU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRQYWRkaW5nRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fV2Via2l0UGFkZGluZ1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlQYWRkaW5nSW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFydCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nU3RhcnRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRQYWRkaW5nU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQYWRkaW5nU3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5n
SW5saW5lU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0UGFkZGluZ1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBhZGRpbmdTdGFydFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0UGFkZGluZ1N0YXJ0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
UGVyc3BlY3RpdmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0
aXZlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRQZXJzcGVjdGl2ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRQZXJzcGVjdGl2ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdFBlcnNwZWN0aXZl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
UGVyc3BlY3RpdmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJz
cGVjdGl2ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0UGVyc3BlY3RpdmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2lu
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0
aXZlT3JpZ2luWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3Rp
dmVPcmlnaW5YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGVyc3BlY3RpdmVPcmlnaW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9y
aWdpblhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5ZR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5ZIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5Z
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQZXJzcGVjdGl2ZU9yaWdpbllTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFByaW50Q29sb3JBZGp1c3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdFByaW50Q29sb3JBZGp1c3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFByaW50Q29sb3JBZGp1c3QsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UHJpbnRDb2xvckFkanVzdEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQcmludENvbG9yQWRqdXN0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRQcmludENvbG9yQWRqdXN0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFBy
aW50Q29sb3JBZGp1c3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdGxPcmRlcmluZ0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVy
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9y
ZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0UnRsT3JkZXJpbmciKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdGxPcmRlcmluZ1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFJ0bE9yZGVyaW5nU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRSdGxPcmRlcmluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFJ1YnlQb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0UnVieVBvc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdWJ5UG9zaXRpb24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UnVieVBvc2l0aW9uR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV2Via2l0UnVieVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0UnVieVBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
UnVieVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFJ1YnlQb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRSdWJ5UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFJ1YnlQb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFNoYXBlSW1hZ2VUaHJlc2hvbGRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVNoYXBlSW1hZ2VUaHJlc2hvbGQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIldlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZUltYWdlVGhyZXNo
b2xkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZUltYWdlVGhyZXNob2xkLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU1hcmdp
bkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4pKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNo
YXBlTWFyZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFNoYXBlTWFyZ2luR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0U2hhcGVNYXJnaW4iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU1hcmdp
blNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlTWFyZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBlTWFyZ2luU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRTaGFwZU1hcmdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX1dlYmtpdFNoYXBlT3V0c2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2hhcGVPdXRzaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRTaGFwZU91dHNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0U2hhcGVPdXRzaWRlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
V2Via2l0U2hhcGVPdXRzaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0U2hhcGVPdXRzaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFNoYXBl
T3V0c2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9XZWJraXRTaGFwZU91dHNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFNoYXBlT3V0c2lkZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRDb21iaW5l
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dENvbWJpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dENvbWJpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0Q29tYmluZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRD
b21iaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dENvbWJpbmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dENvbWJpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIldlYmtpdFRleHRDb21iaW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVj
b3JhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdFRleHREZWNvcmF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRp
b25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0VGV4dERlY29yYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbkNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0
RGVjb3JhdGlvbkNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Db2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dERlY29yYXRpb25Db2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJr
aXRUZXh0RGVjb3JhdGlvbkNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25MaW5lR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9u
TGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RGVjb3JhdGlvbkxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0RGVjb3JhdGlvbkxpbmUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRU
ZXh0RGVjb3JhdGlvbkxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRp
b25MaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uTGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VGV4dERlY29yYXRpb25MaW5l
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VGV4dERlY29yYXRpb25Ta2lwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvblNraXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU2tpcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblNraXBHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJXZWJraXRUZXh0RGVjb3JhdGlvblNraXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblNraXBTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25Ta2lwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRE
ZWNvcmF0aW9uU2tpcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0VGV4dERlY29yYXRpb25Ta2lwIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25TdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dERlY29yYXRpb25TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0
VGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvblN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25TdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
V2Via2l0VGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3RHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3RTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHREZWNvcmF0aW9u
c0luRWZmZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VGV4dEVtcGhhc2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRUZXh0RW1waGFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dEVtcGhhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VGV4dEVtcGhhc2lzIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dEVtcGhhc2lzQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvckdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIldlYmtpdFRleHRFbXBoYXNpc0NvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzQ29sb3JTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
RW1waGFzaXNDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiV2Via2l0VGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbkdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9z
aXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiV2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvblNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFRleHRFbXBoYXNpc1Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNp
c1N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzU3R5bGVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRUZXh0RW1waGFzaXNTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEVtcGhhc2lz
U3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdFRleHRFbXBoYXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEZpbGxDb2xvckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEZpbGxDb2xv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0Rmls
bENvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dEZpbGxDb2xvciIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3JT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRGaWxsQ29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dEZp
bGxDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0VGV4dEZpbGxDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0T3JpZW50
YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dE9yaWVudGF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dE9yaWVudGF0aW9uIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dE9y
aWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRPcmllbnRhdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0T3JpZW50YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTZWN1cml0eUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0U2VjdXJpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dFNlY3VyaXR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dFNlY3VyaXR5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dFNlY3VyaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTZWN1cml0eSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUZXh0U2VjdXJpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIldlYmtpdFRleHRTZWN1cml0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTaXplQWRqdXN0R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNp
emVBZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VGV4dFNpemVBZGp1c3RHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0U2l6ZUFkanVzdCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRT
aXplQWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFNpemVBZGp1c3QsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VGV4dFNpemVBZGp1c3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRTaXplQWRqdXN0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0
cm9rZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0
U3Ryb2tlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dFN0cm9rZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VGV4
dFN0cm9rZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X1dlYmtpdFRleHRTdHJva2VDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tlQ29sb3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUNvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiV2Via2l0VGV4dFN0cm9rZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0cm9rZUNvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tl
Q29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIldlYmtpdFRleHRTdHJva2VDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUZXh0U3Ryb2tl
V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4
dFN0cm9rZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VGV4dFN0cm9rZVdpZHRoIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFN0
cm9rZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRTdHJva2VXaWR0aCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUZXh0U3Ryb2tlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRTdHJva2VXaWR0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRVbmRlcmxpbmVQ
b3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZVBvc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9u
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRa
b29tR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Wm9vbSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dFpvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VGV4dFpvb21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUZXh0Wm9vbSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRleHRab29tU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0VGV4dFpvb20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VGV4dFpvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VGV4dFpvb21TZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRleHRab29t
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0p
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2Zvcm1HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2Zvcm0iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNm
b3JtIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VHJhbnNmb3JtT3JpZ2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2Zvcm1PcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJXZWJraXRUcmFuc2Zvcm1PcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm1PcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VHJhbnNmb3JtT3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNm
b3JtT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtT3JpZ2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5YR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblhTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtT3Jp
Z2luWFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiV2Via2l0VHJhbnNmb3JtT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpbllHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblkpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdp
blksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNm
b3JtT3JpZ2luWUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zv
cm1PcmlnaW5ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dl
YmtpdFRyYW5zZm9ybU9yaWdpbllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5a
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX1dlYmtpdFRyYW5zZm9ybU9yaWdpblpHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2Zv
cm1PcmlnaW5aIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VHJhbnNmb3JtT3JpZ2luWlNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblos
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNm
b3JtT3JpZ2luWiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1PcmlnaW5aU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRUcmFuc2Zvcm1PcmlnaW5a
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0
VHJhbnNmb3JtU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdFRyYW5zZm9ybVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNmb3JtU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1TdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUcmFuc2Zvcm1TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2Zvcm1TdHlsZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNm
b3JtU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRUcmFuc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0
aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Vi
a2l0VHJhbnNpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zaXRpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFu
c2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJXZWJraXRUcmFuc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkRlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EZWxheSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uRGVs
YXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uRGVsYXkiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uRGVsYXlT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkRlbGF5LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRp
b25EZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0VHJhbnNpdGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJr
aXRUcmFuc2l0aW9uRHVyYXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uRHVy
YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9X
ZWJraXRUcmFuc2l0aW9uRHVyYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNpdGlvbkR1
cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2l0aW9uUHJvcGVydHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uUHJvcGVydHlH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uUHJvcGVydHkiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtp
dFRyYW5zaXRpb25Qcm9wZXJ0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRUcmFuc2l0
aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV2Via2l0
VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlckRyYWdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZ0dldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IldlYmtpdFVzZXJEcmFnIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fV2Via2l0VXNlckRyYWdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyRHJhZywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9XZWJraXRVc2VyRHJhZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiV2Via2l0VXNlckRyYWciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyTW9kaWZ5R2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyTW9kaWZ5LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJNb2RpZnlHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJXZWJraXRVc2VyTW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNlck1vZGlmeVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VXNlck1vZGlmeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9XZWJraXRVc2VyTW9kaWZ5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJXZWJraXRVc2VyTW9kaWZ5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNl
clNlbGVjdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VXNlclNl
bGVjdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fV2Via2l0VXNlclNlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9XZWJraXRVc2VyU2VsZWN0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiV2Via2l0VXNlclNlbGVjdCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVz
ZXJTZWxlY3RTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX1dlYmtpdFVzZXJTZWxlY3QsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0VXNl
clNlbGVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiV2Via2l0VXNlclNlbGVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFdyaXRpbmdNb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0V3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0V3JpdGluZ01vZGVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJXZWJraXRXcml0aW5nTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX1dlYmtpdFdyaXRpbmdNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01v
ZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fV2Via2l0V3Jp
dGluZ01vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fV2Via2l0V3JpdGluZ01vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIldlYmtpdFdyaXRpbmdNb2RlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25Db250ZW50R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduQ29udGVudCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkNvbnRlbnRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJhbGlnbkNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRl
bnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25Db250
ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWduQ29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiYWxpZ25Db250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtc0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QWxpZ25JdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbkl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYWxpZ25JdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdu
SXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2FsaWduSXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25JdGVtc1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYWxpZ25JdGVtcyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduU2VsZkdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnblNlbGYsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25TZWxmR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiYWxpZ25TZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYWxpZ25TZWxmU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduU2VsZiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnblNlbGZT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFs
aWduU2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWdubWVudEJhc2VsaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bGlnbm1lbnRCYXNlbGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50QmFzZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50QmFzZWxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGln
bm1lbnRCYXNlbGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FsaWdubWVudEJhc2VsaW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50QmFz
ZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYWxpZ25tZW50QmFzZWxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFsaWdubWVudEJhc2VsaW5lIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxsR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGwpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbGxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGwiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGwsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxsLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsbFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYWxsIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWx0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbHQiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbHRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWx0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Fs
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
YWx0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5p
bWF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1h
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb24sIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Fu
aW1hdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYW5pbWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYW5pbWF0aW9uRGVsYXlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUFuaW1hdGlvbkRlbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFuaW1hdGlv
bkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uRGVsYXlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EZWxheSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25EZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYW5pbWF0aW9uRGVsYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25EaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRGlyZWN0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRpcmVjdGlvbkdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImFuaW1hdGlvbkRpcmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkRpcmVjdGlvblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUFuaW1hdGlvbkRpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25EaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRGlyZWN0aW9uU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb25E
aXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25EdXJhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QW5pbWF0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkR1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkR1cmF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYW5p
bWF0aW9uRHVyYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25EdXJhdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9u
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkR1
cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbkR1cmF0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb25EdXJhdGlvbiIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkZpbGxNb2RlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0
aW9uRmlsbE1vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5p
bWF0aW9uRmlsbE1vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb25GaWxsTW9kZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbkZpbGxN
b2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRmlsbE1vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uRmls
bE1vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImFuaW1hdGlvbkZpbGxNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25JdGVyYXRp
b25Db3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25JdGVyYXRpb25Db3VudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0
aW9uSXRlcmF0aW9uQ291bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25JdGVy
YXRpb25Db3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25JdGVyYXRpb25Db3VudFNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25OYW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25O
YW1lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25OYW1lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2FuaW1hdGlvbk5hbWVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb25OYW1lIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uTmFtZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYW5pbWF0aW9uTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25OYW1lU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb25OYW1lIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9u
UGxheVN0YXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25Q
bGF5U3RhdGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25QbGF5U3RhdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb25Q
bGF5U3RhdGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25QbGF5U3RhdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uUGxheVN0
YXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvblBsYXlTdGF0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0aW9uUGxheVN0YXRlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGltaW5nRnVuY3Rp
b25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1
bmN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25UaW1pbmdGdW5jdGlv
blNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
YW5pbWF0aW9uVGltaW5nRnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RSYXRpb0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QXNwZWN0UmF0aW8pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYXNwZWN0UmF0aW8i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RS
YXRpb1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUFzcGVjdFJhdGlvLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdFJhdGlvU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhc3BlY3RSYXRpbyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmQpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImJhY2tncm91bmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2ht
ZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZEF0dGFjaG1lbnQiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQXR0YWNobWVudFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRBdHRhY2htZW50LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRB
dHRhY2htZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJiYWNrZ3JvdW5kQXR0YWNobWVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRCbGVuZE1vZGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRCbGVuZE1v
ZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEJs
ZW5kTW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmRCbGVuZE1vZGUiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQmxlbmRNb2Rl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZEJsZW5kTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQmxlbmRNb2RlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRC
bGVuZE1vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImJhY2tncm91bmRCbGVuZE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDbGlwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDbGlwR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiYmFja2dyb3VuZENsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ2xpcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDbGlw
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JhY2tncm91bmRDbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kQ2xpcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRDb2xvckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYmFja2dyb3VuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmRDb2xvciIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRJbWFnZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3Jv
dW5kSW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dy
b3VuZEltYWdlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZEltYWdlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZEltYWdlU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JhY2tncm91bmRJbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kSW1hZ2VTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmRJ
bWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRPcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRPcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZE9yaWdpbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmRP
cmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
YWNrZ3JvdW5kT3JpZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kT3JpZ2luLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRPcmlnaW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImJhY2tncm91bmRPcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3Np
dGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91bmRQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9u
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJi
YWNrZ3JvdW5kUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblhHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJiYWNrZ3JvdW5kUG9zaXRpb25YIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25YU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNr
Z3JvdW5kUG9zaXRpb25YIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUG9zaXRpb25ZR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYmFja2dyb3VuZFBvc2l0aW9uWSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvbllTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRQb3NpdGlvblksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFBvc2l0aW9uWVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dy
b3VuZFBvc2l0aW9uWSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRSZXBlYXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRSZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZFJlcGVhdEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJh
Y2tncm91bmRSZXBlYXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kUmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kUmVw
ZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRSZXBlYXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmRSZXBlYXQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2l6ZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRTaXplLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRTaXplR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZFNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kU2l6ZVNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRTaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kU2l6ZSIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVTaGlmdEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImJhc2VsaW5lU2hpZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNlbGluZVNoaWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFzZWxp
bmVTaGlmdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNl
bGluZVNoaWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Jhc2VsaW5lU2hpZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhc2VsaW5lU2hpZnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja1NpemVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tTaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJsb2Nr
U2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Js
b2NrU2l6ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ibG9ja1NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tTaXplU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJibG9ja1NpemUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRl
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9y
ZGVyQmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXJCbG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckJsb2NrQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckJsb2NrQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJs
b2NrQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja0NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tDb2xvciwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0NvbG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckJsb2NrQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImJvcmRlckJsb2NrQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiYm9yZGVyQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2Nr
RW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJs
b2NrRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja0VuZCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kQ29sb3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kQ29sb3IpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJs
b2NrRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyQmxvY2tFbmRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrRW5kQ29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a0VuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZENvbG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJsb2NrRW5kQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImJvcmRlckJsb2NrRW5kQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja0VuZFN0eWxlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFN0eWxlKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a0VuZFN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrRW5kU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJCbG9ja0VuZFN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tF
bmRTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kU3R5bGUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRTdHlsZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCbG9ja0VuZFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja0VuZFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tFbmRXaWR0aEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tF
bmRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9ja0VuZFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyQmxvY2tFbmRXaWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5k
V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrRW5kV2lkdGgsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tFbmRXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYm9yZGVyQmxvY2tFbmRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJC
bG9ja1N0YXJ0Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRl
ckJsb2NrU3RhcnRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvckdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckJsb2NrU3RhcnRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRDb2xvclNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckJsb2NrU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydENvbG9yU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXJCbG9ja1N0YXJ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0U3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFN0eWxlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRT
dHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnRTdHlsZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrU3RhcnRTdHls
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0U3R5bGUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tTdGFydFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja1N0YXJ0U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0YXJ0V2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0aCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
QmxvY2tTdGFydFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckJsb2NrU3RhcnRXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckJsb2NrU3RhcnRX
aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJsb2NrU3RhcnRXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0aCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1N0
YXJ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdGFydFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJCbG9ja1N0YXJ0V2lkdGgiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a1N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0
eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJCbG9ja1N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckJsb2NrU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJCbG9ja1N0eWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxv
Y2tTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3R5bGUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tTdHlsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9j
a1N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJib3JkZXJCbG9ja1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tXaWR0aCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCbG9ja1dpZHRoR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVyQmxvY2tXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckJsb2NrV2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9j
a1dpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
ckJsb2NrV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyQmxvY2tXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyQmxvY2tXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b20s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiYm9yZGVyQm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJv
dHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJCb3R0b21TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckJvdHRvbSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUNvbG9yR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29s
b3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJCb3R0b21Db2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUNvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tQ29sb3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckJv
dHRvbUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyQm90dG9tTGVmdFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tTGVmdFJhZGl1cywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUxlZnRSYWRpdXNT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbUxlZnRSYWRpdXMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
Qm90dG9tTGVmdFJhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbVJpZ2h0UmFkaXVzR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1
cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJC
b3R0b21SaWdodFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlckJvdHRvbVJpZ2h0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tUmlnaHRSYWRpdXNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21TdHlsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21TdHlsZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImJvcmRlckJvdHRvbVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQm90dG9tU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJCb3R0b21TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0b21TdHlsZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyQm90dG9tU3R5bGUiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJCb3R0
b21XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckJvdHRvbVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlckJvdHRvbVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyQm90dG9tV2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJCb3R0b21XaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckJvdHRvbVdpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckJvdHRvbVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJCb3R0b21XaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckNvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sbGFwc2UsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sbGFwc2VHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJib3JkZXJDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckNvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFw
c2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29s
bGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyQ29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyQ29sb3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJvcmRlckNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJDb2xv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
Ym9yZGVyQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJFbmRFbmRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlckVuZEVuZFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZEVuZFJhZGl1c0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckVuZEVuZFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZEVuZFJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckVu
ZEVuZFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJFbmRFbmRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyRW5kRW5kUmFkaXVzU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJFbmRFbmRSYWRpdXMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJF
bmRTdGFydFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
RW5kU3RhcnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckVuZFN0YXJ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZFN0YXJ0UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
Ym9yZGVyRW5kU3RhcnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJFbmRTdGFydFJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckVu
ZFN0YXJ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckVuZFN0YXJ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckVuZFN0YXJ0UmFkaXVzU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJFbmRTdGFy
dFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVySW1hZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJJbWFnZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlckltYWdlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VPdXRzZXRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdlT3V0c2V0KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFn
ZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bWFnZU91dHNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckltYWdlT3V0c2V0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW1hZ2VPdXRzZXRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZU91dHNl
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
Ym9yZGVySW1hZ2VPdXRzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlUmVwZWF0LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlUmVwZWF0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVySW1hZ2VSZXBlYXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVJlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklt
YWdlUmVwZWF0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckltYWdlUmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlUmVwZWF0U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbWFnZVJlcGVhdCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdl
U2xpY2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xp
Y2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlU2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW1hZ2VTbGljZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckltYWdlU2xpY2UiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFn
ZVNsaWNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNsaWNlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdl
U2xpY2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImJvcmRlckltYWdlU2xpY2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNvdXJjZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU291cmNlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU291cmNlR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiYm9yZGVySW1hZ2VTb3VyY2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVNvdXJjZVNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlU291cmNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlckltYWdlU291cmNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckltYWdlU291cmNlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbWFnZVNvdXJjZSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklt
YWdlV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdl
V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlckltYWdlV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVySW1hZ2VXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckltYWdlV2lkdGgi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJ
bWFnZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbWFnZVdpZHRoLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklt
YWdlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImJvcmRlckltYWdlV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlcklubGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlcklu
bGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcklubGluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXJJbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbmxpbmVDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9y
ZGVySW5saW5lQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUNvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGlu
ZUNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcklubGluZUNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbmxpbmVDb2xvciIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxp
bmVFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5s
aW5lRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVySW5saW5lRW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcklubGluZUVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGluZUVu
ZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cklubGluZUVuZENvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kQ29sb3JHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJib3JkZXJJbmxpbmVFbmRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
SW5saW5lRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW5saW5lRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kQ29sb3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGlu
ZUVuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVySW5saW5lRW5kU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImJvcmRlcklubGluZUVuZFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lRW5kU3R5bGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRTdHlsZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9y
ZGVySW5saW5lRW5kU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZFdpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZFdpZHRo
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVySW5saW5lRW5kV2lkdGgiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVFbmRXaWR0aFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVuZFdpZHRoLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZUVu
ZFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJib3JkZXJJbmxpbmVFbmRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJib3JkZXJJbmxpbmVTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVySW5saW5lU3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGluZVN0
YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVySW5saW5lU3RhcnRDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lU3RhcnRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydENvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYm9yZGVySW5saW5lU3RhcnRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3JTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5l
U3RhcnRDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYm9yZGVySW5saW5lU3RhcnRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0U3R5bGVHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0U3R5bGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklu
bGluZVN0YXJ0U3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVySW5saW5lU3RhcnRTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlcklubGluZVN0YXJ0
U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJJbmxpbmVTdGFydFN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRTdHls
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxp
bmVTdGFydFN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0U3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcklubGluZVN0YXJ0U3R5
bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJJbmxpbmVTdGFydFdpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJJbmxpbmVTdGFydFdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdGFydFdpZHRoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVN0YXJ0V2lkdGhHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJib3JkZXJJbmxpbmVTdGFydFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRXaWR0aFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0V2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3RhcnRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVT
dGFydFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXJJbmxpbmVTdGFydFdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3R5bGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0eWxlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHls
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlcklubGluZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVySW5saW5lU3R5bGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJJbmxpbmVTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJJbmxpbmVTdHlsZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVySW5s
aW5lU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJJbmxpbmVXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGluZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9y
ZGVySW5saW5lV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJJbmxpbmVXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVdpZHRo
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcklubGlu
ZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcklubGluZVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJJbmxpbmVXaWR0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnQpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJMZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlckxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJMZWZ0Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlckxlZnRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyTGVmdENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckxlZnRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckxlZnRD
b2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlckxlZnRDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0Q29sb3IsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
TGVmdENvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXJMZWZ0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0U3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFN0eWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRTdHlsZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlckxlZnRTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlckxlZnRTdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0
U3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyTGVmdFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJMZWZ0U3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJMZWZ0V2lkdGhHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFdpZHRo
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRXaWR0
aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlckxlZnRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlckxlZnRXaWR0aFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJMZWZ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyTGVmdFdpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJMZWZ0V2lkdGgiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSYWRp
dXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJh
ZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlclJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJhZGl1c1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlclJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyUmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJSYWRpdXMiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiYm9yZGVyUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJSaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJp
Z2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXJSaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclJpZ2h0Q29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJv
cmRlclJpZ2h0Q29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJSaWdodENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodENv
bG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclJpZ2h0Q29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclJpZ2h0Q29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFN0eWxlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFN0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0
U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJSaWdodFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyUmlnaHRTdHlsZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyUmlnaHRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFN0eWxlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJSaWdo
dFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyUmlnaHRXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyUmlnaHRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJSaWdodFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyUmln
aHRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclJpZ2h0V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclJpZ2h0V2lkdGgsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyUmlnaHRXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyUmlnaHRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclNwYWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclNwYWNpbmcsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyU3BhY2luZ0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlclNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTcGFjaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclNwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImJvcmRlclNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydEVuZFJhZGl1c0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3RhcnRFbmRSYWRpdXMpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0RW5kUmFk
aXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0
RW5kUmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyU3RhcnRFbmRSYWRpdXMiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdGFydEVuZFJh
ZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0YXJ0RW5kUmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0RW5kUmFkaXVzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
clN0YXJ0RW5kUmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXJTdGFydEVuZFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0U3RhcnRSYWRpdXNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0YXJ0U3RhcnRSYWRpdXMpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
clN0YXJ0U3RhcnRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyU3RhcnRTdGFydFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlclN0YXJ0U3Rh
cnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJTdGFydFN0YXJ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3RhcnRTdGFydFJh
ZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJT
dGFydFN0YXJ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclN0YXJ0U3RhcnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclN0YXJ0U3RhcnRS
YWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3R5
bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlclN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyU3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJTdHlsZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlclN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlclN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlclN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3AsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVy
VG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclRvcCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcENvbG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
VG9wQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
VG9wQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJUb3BDb2xvciIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcENvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyVG9wQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wQ29sb3JTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclRvcENvbG9yIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9w
TGVmdFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9w
TGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyVG9wTGVmdFJhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BMZWZ0UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVy
VG9wTGVmdFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlclRvcExlZnRSYWRpdXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRv
cExlZnRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wTGVmdFJhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyVG9wTGVmdFJhZGl1cyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFJp
Z2h0UmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BS
aWdodFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyVG9wUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wUmlnaHRSYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3Jk
ZXJUb3BSaWdodFJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcFJpZ2h0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wUmlnaHRSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wUmlnaHRSYWRpdXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlclRvcFJpZ2h0UmFk
aXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyVG9wU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJUb3BTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJUb3BTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlclRvcFN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyVG9wU3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJUb3BTdHlsZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVy
VG9wU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJUb3BXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyVG9wV2lkdGgi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJU
b3BXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFdpZHRoLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlclRvcFdpZHRo
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJi
b3JkZXJUb3BXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcldpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyV2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXJXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcldpZHRoU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlcldpZHRoIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm90dG9tR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3R0b20pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvdHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3R0b21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3R0b20iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3R0b21TZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3R0b20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvdHRvbVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2hhZG93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3hTaGFkb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JveFNoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3hTaGFkb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3hTaGFkb3ciKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hTaGFkb3dTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3hTaGFkb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm94U2hhZG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNoYWRvd1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm94U2hhZG93Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3hTaXppbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNpemluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hTaXppbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3hT
aXppbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3hTaXppbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3hTaXppbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm94U2l6aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveFNpemluZ1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm94U2l6aW5nIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtBZnRlckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QnJlYWtBZnRlcikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtBZnRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0FmdGVyR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYnJlYWtBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0FmdGVyLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQWZ0ZXIsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJl
YWtBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYnJlYWtBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JyZWFrQmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCcmVha0JlZm9yZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYnJlYWtCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYnJlYWtCZWZvcmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJicmVha0JlZm9yZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrQmVmb3JlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QnJlYWtCZWZvcmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYnJlYWtCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJyZWFrQmVmb3JlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtJbnNpZGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJyZWFrSW5zaWRlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImJyZWFrSW5zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYnJlYWtJbnNpZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0luc2lkZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha0luc2lkZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9icmVha0luc2lkZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYnJlYWtJbnNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkUmVuZGVyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkUmVuZGVyaW5nR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYnVmZmVyZWRSZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZFJlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJ1
ZmZlcmVkUmVuZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2J1ZmZlcmVkUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkUmVuZGVyaW5nU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJidWZmZXJlZFJlbmRlcmlu
ZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRp
b25TaWRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2Fw
dGlvblNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FwdGlv
blNpZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjYXB0aW9uU2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRpb25TaWRlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2Fw
dGlvblNpZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2Fw
dGlvblNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY2FwdGlvblNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNhcHRpb25TaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xvckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Q2FyZXRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldENvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY2FyZXRD
b2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nh
cmV0Q29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXJldENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRDb2xvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2FyZXRDb2xvciIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NsZWFyR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGVhcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xlYXIsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xlYXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjbGVh
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsZWFy
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q2xlYXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fY2xlYXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY2xlYXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNsZWFyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Q2xpcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fY2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
bGlwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiY2xpcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NsaXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXAsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2xpcCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBQYXRoR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwUGF0aCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGhHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJj
bGlwUGF0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NsaXBQYXRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2xpcFBhdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFBhdGhTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNsaXBQYXRoIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcFJ1bGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBSdWxlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImNsaXBSdWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fY2xpcFJ1bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwUnVsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlwUnVsZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2xpcFJ1bGUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJjb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBvbGF0aW9uR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiY29sb3JJbnRlcnBvbGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBvbGF0aW9uU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sb3JJbnRlcnBvbGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVycG9sYXRpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9ySW50
ZXJwb2xhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVyc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2xvclByb2ZpbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNv
bG9yUHJvZmlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fY29sb3JQcm9maWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yUHJvZmlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9yUHJvZmlsZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yUHJvZmlsZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbG9yUHJvZmlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jb2xvclByb2ZpbGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JQcm9maWxlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2xvclByb2ZpbGUiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRl
cmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmcp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bG9yUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bG9yUmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sb3JSZW5kZXJpbmciKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvclJlbmRlcmluZ1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yUmVuZGVyaW5nU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2xvclJlbmRlcmlu
ZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9y
U2NoZW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2xvclNjaGVtZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
b3JTY2hlbWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JT
Y2hlbWVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2xvclNjaGVtZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yU2NoZW1lU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
b3JTY2hlbWUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
b3JTY2hlbWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sb3JTY2hlbWVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9yU2NoZW1lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uQ291bnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkNvdW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNv
bHVtbkNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fY29sdW1uQ291bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5Db3VudCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5Db3VudFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29s
dW1uQ291bnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2x1bW5GaWxsR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5G
aWxsKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jb2x1bW5GaWxsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtbkZpbGxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW5GaWxsIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uRmlsbFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNv
bHVtbkZpbGwsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uRmlsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5GaWxsU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW5GaWxsIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uR2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlDb2x1bW5HYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkdhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5HYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW5HYXAiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5HYXBT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlDb2x1bW5HYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uR2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbkdhcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sdW1uR2FwIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiY29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbHVtblJ1bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29s
dW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtblJ1bGVDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
dW1uUnVsZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5SdWxlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uUnVsZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sdW1uUnVsZUNv
bG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29s
dW1uUnVsZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVDb2xvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5S
dWxlQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImNvbHVtblJ1bGVDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlU3R5bGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVN0eWxlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiY29sdW1uUnVsZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fY29sdW1uUnVsZVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVT
dHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9jb2x1bW5SdWxlU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtblJ1bGVTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblJ1bGVXaWR0aEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRoKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlV2lkdGgs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVdpZHRo
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiY29sdW1uUnVsZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uUnVsZVdpZHRoU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uUnVsZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbHVtblJ1bGVXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5SdWxlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtblJ1bGVXaWR0aCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblNwYW5H
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNwYW4pKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtblNwYW4s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uU3BhbkdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImNvbHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5TcGFuU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5TcGFuLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtblNwYW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImNvbHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbHVtbldpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sdW1uV2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5XaWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbldpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW5XaWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbnNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbnMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNv
bHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1ucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtbnMiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb250ZW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb250ZW50Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29udGVudFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb250ZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlckluY3JlbWVudEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlckluY3JlbWVudCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVySW5jcmVtZW50
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiY291bnRlckluY3JlbWVudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJJbmNyZW1lbnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb3VudGVySW5jcmVtZW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJJbmNyZW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlckluY3JlbWVudFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY291bnRlckluY3JlbWVu
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50
ZXJSZXNldEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q291bnRlclJlc2V0
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
b3VudGVyUmVzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY291
bnRlclJlc2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY291bnRlclJlc2V0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlclJlc2V0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q291bnRlclJlc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvdW50ZXJSZXNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyUmVzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvdW50ZXJSZXNldCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2N1cnNvckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q3Vyc29yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jdXJzb3IsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fY3Vyc29yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY3Vyc29yIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY3Vyc29yU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Q3Vyc29yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2N1cnNvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jdXJzb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImN1cnNvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2N4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDeCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY3hHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJjeCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2N4U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q3gsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fY3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fY3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImN4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY3lHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUN5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9jeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jeUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImN5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY3lTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDeSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiY3kiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eURpcmVjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2RpcmVjdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImRpcmVjdGlvbiIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RpcmVjdGlvblNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGlyZWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJkaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kaXNwbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kaXNwbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rpc3BsYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJkaXNwbGF5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGlzcGxheVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eURpc3BsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGlzcGxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kaXNwbGF5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJkaXNwbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21pbmFudEJhc2VsaW5lR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiZG9taW5hbnRCYXNlbGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50QmFzZWxpbmVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlEb21p
bmFudEJhc2VsaW5lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2RvbWluYW50QmFzZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRCYXNlbGluZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZG9taW5hbnRCYXNlbGluZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5Q2VsbHNH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5Q2VsbHMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlDZWxsc0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImVtcHR5Q2VsbHMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lbXB0eUNlbGxzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RW1wdHlDZWxscywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbXB0eUNlbGxzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Vt
cHR5Q2VsbHNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImVtcHR5Q2VsbHMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlFbmFibGVCYWNrZ3JvdW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZUJhY2tncm91bmRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJlbmFibGVCYWNrZ3JvdW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZW5hYmxlQmFja2dyb3VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91
bmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlQmFj
a2dyb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9lbmFibGVCYWNrZ3JvdW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlbmFibGVCYWNrZ3JvdW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmlsbCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9maWxsR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZmlsbCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxs
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGwsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmls
bFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
ZmlsbCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Zp
bGxPcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxsT3BhY2l0
eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmls
bE9wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmaWxsT3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxPcGFjaXR5U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
RmlsbE9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZmlsbE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZmlsbE9wYWNpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZpbGxPcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbFJ1bGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUZpbGxSdWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZpbGxSdWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbFJ1bGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlGaWxsUnVsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9maWxsUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsUnVsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmlsbFJ1bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWx0ZXJHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUZpbHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZpbHRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZpbHRlciIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbHRlclNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUZpbHRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
aWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZmlsdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJmaWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
bGV4KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJmbGV4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZmxleFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXgsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmbGV4Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEJhc2lzR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4QmFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhCYXNpcywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4QmFzaXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmbGV4
QmFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
bGV4QmFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4QmFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEJhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhCYXNpc1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleEJhc2lzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERpcmVjdGlv
bkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleERpcmVjdGlvbikpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERp
cmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4RGly
ZWN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZmxleERpcmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhEaXJlY3Rpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4RGlyZWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZsZXhEaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleERpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleERpcmVjdGlvbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhGbG93R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4RmxvdykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3csIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3dHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
bGV4RmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZsZXhGbG93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEZsb3dTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZsZXhGbG93Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleEdyb3dHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhHcm93KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3JvdywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3Jvd0dldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImZsZXhHcm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZmxleEdyb3dTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4R3JvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3JvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4R3Jvd1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleEdyb3ciKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4U2hyaW5rR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4U2hyaW5rLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhTaHJpbmtHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJmbGV4U2hyaW5rIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZmxleFNocmlua1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFNocmluaywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
U2hyaW5rU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJmbGV4U2hyaW5rIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxleFdyYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZs
ZXhXcmFwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbGV4V3JhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
bGV4V3JhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZsZXhXcmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleFdyYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4V3Jh
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4V3JhcCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4V3JhcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZmxleFdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mbG9hdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rmxv
YXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Zsb2F0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb2F0R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiZmxvYXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbG9hdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb2F0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb2F0U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmbG9hdCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29sb3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb29kQ29sb3IpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RDb2xvckdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImZsb29kQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mbG9vZENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rmxvb2RDb2xvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbG9vZENvbG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kQ29s
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImZsb29kQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbG9vZE9wYWNpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZs
b29kT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxvb2RPcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2Zsb29kT3BhY2l0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZsb29kT3BhY2l0eSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kT3BhY2l0eVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mbG9vZE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RPcGFjaXR5U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmbG9vZE9wYWNpdHkiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUZvbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJmb250Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udERpc3BsYXlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUZvbnREaXNwbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250RGlzcGxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250RGlzcGxheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnREaXNwbGF5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udERpc3BsYXlTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlGb250RGlzcGxheSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250RGlzcGxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RGlzcGxheVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udERpc3BsYXkiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmFtaWx5R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250RmFtaWx5KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmFtaWx5LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGYW1pbHlHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJmb250RmFtaWx5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udEZhbWlseVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZhbWlseSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmFt
aWx5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJmb250RmFtaWx5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZm9udEZlYXR1cmVTZXR0aW5nc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5ncykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1cmVTZXR0aW5ncywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250RmVhdHVyZVNldHRpbmdzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiZm9udEZlYXR1cmVTZXR0aW5ncyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3NTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
b250RmVhdHVyZVNldHRpbmdzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRGZWF0dXJlU2V0dGluZ3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEZlYXR1cmVTZXR0aW5nc1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udEZlYXR1
cmVTZXR0aW5ncyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRLZXJuaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRGb250S2VybmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udEtlcm5pbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udEtlcm5pbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250S2VybmluZyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRLZXJuaW5nU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0Rm9udEtlcm5pbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udEtlcm5pbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udEtlcm5pbmdTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnRLZXJuaW5nIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udE9wdGlj
YWxTaXppbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRPcHRpY2Fs
U2l6aW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250T3B0aWNhbFNpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250T3B0aWNhbFNpemluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRPcHRpY2FsU2l6
aW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dE9wdGljYWxTaXppbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250T3B0aWNhbFNpemluZywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250T3B0aWNhbFNpemluZywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250T3B0aWNhbFNpemluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiZm9udE9wdGljYWxTaXppbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Rm9udFNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZvbnRTaXplR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFNpemUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U2l6ZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUZvbnRTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250U2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTdHJldGNoR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2gsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2hHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
b250U3RyZXRjaCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRTdHJldGNoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2gsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0cmV0Y2hT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZv
bnRTdHJldGNoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3R5
bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3R5
bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN0eWxl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRTdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZm9udFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udFN5bnRoZXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Rm9udFN5bnRoZXNpcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5bnRoZXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250U3ludGhlc2lzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFN5
bnRoZXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRTeW50aGVzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U3ludGhlc2lzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRTeW50aGVzaXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFN5bnRo
ZXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZm9udFN5bnRoZXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRWYXJpYW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGb250VmFyaWFudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udFZhcmlhbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udFZhcmlhbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250VmFyaWFudCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udFZhcmlhbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnRWYXJpYW50Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRBbHRl
cm5hdGVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudEFs
dGVybmF0ZXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRWYXJpYW50QWx0ZXJuYXRlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEFsdGVybmF0ZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250
VmFyaWFudEFsdGVybmF0ZXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250VmFyaWFudEFsdGVybmF0ZXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFu
dEFsdGVybmF0ZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udFZhcmlhbnRBbHRlcm5hdGVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50QWx0ZXJuYXRlc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udFZhcmlhbnRB
bHRlcm5hdGVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhbnRDYXBzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
b250VmFyaWFudENhcHMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50Q2FwcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudENhcHNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250VmFyaWFu
dENhcHMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250VmFyaWFudENhcHNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudENhcHMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRDYXBzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRW
YXJpYW50Q2Fwc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZm9udFZhcmlhbnRDYXBzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRFYXN0QXNpYW5HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50RWFzdEFzaWFuKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RBc2lh
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVh
c3RBc2lhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRWYXJpYW50RWFzdEFzaWFuIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRFYXN0QXNp
YW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudEVhc3RBc2lhbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudEVhc3RBc2lhbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFy
aWFudEVhc3RBc2lhblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZm9udFZhcmlhbnRFYXN0QXNpYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudExpZ2F0dXJlc0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50
TGlnYXR1cmVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRW
YXJpYW50TGlnYXR1cmVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFZhcmlhbnRMaWdhdHVyZXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFu
dExpZ2F0dXJlc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TGlnYXR1cmVzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRWYXJpYW50TGlnYXR1cmVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJmb250VmFyaWFudExpZ2F0dXJlcyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TnVtZXJpY0dldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFy
aWFudE51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9u
dFZhcmlhbnROdW1lcmljR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udFZhcmlhbnROdW1lcmljIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRO
dW1lcmljU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50TnVtZXJpYywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFy
aWFudE51bWVyaWNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImZvbnRWYXJpYW50TnVtZXJpYyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50UG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50UG9zaXRpb24pKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50UG9zaXRp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhbnRQ
b3NpdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRWYXJpYW50UG9zaXRpb24iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudFBvc2l0aW9u
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWFudFBvc2l0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYW50
UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImZvbnRWYXJpYW50UG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWF0aW9uU2V0dGluZ3NHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYXRpb25TZXR0aW5ncykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFZhcmlhdGlvblNl
dHRpbmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJp
YXRpb25TZXR0aW5nc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnRWYXJpYXRpb25TZXR0aW5ncyIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRWYXJpYXRp
b25TZXR0aW5nc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYXRpb25TZXR0aW5ncywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250VmFyaWF0aW9uU2V0dGluZ3Ms
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udFZhcmlhdGlvblNldHRpbmdzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250VmFyaWF0aW9uU2V0dGluZ3MiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250V2VpZ2h0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250V2VpZ2h0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250V2VpZ2h0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRXZWlnaHRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJmb250V2VpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udFdlaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udFdlaWdodCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250V2VpZ2h0
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJm
b250V2VpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHYXApKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dhcCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nYXBHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJn
YXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nYXBT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlHYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2dhcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiZ2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWxHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0
aW9uSG9yaXpvbnRhbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
bHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdseXBoT3JpZW50YXRp
b25Ib3Jpem9udGFsIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHbHlwaE9yaWVu
dGF0aW9uSG9yaXpvbnRhbCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uSG9yaXpv
bnRhbFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWxHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdseXBoT3JpZW50
YXRpb25WZXJ0aWNhbCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2dseXBoT3JpZW50YXRpb25WZXJ0aWNhbFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50
YXRpb25WZXJ0aWNhbCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9nbHlwaE9yaWVudGF0aW9uVmVydGljYWwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJnbHlw
aE9yaWVudGF0aW9uVmVydGljYWwiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJncmlkIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEFyZWFHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBcmVhKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWRBcmVh
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEFy
ZWFTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQXJlYSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkQXJlYSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXJlYVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZEFyZWEiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0b0NvbHVtbnNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvQ29sdW1ucykpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1
bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvQ29s
dW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWRBdXRvQ29sdW1ucyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvQ29sdW1uc1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUdyaWRBdXRvQ29sdW1ucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkQXV0b0NvbHVtbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Db2x1bW5zU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkQXV0b0NvbHVtbnMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0
b0Zsb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZEF1dG9GbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRB
dXRvRmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWRBdXRvRmxvdyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvRmxvd1NldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUdyaWRBdXRvRmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkQXV0b0Zsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9GbG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkQXV0b0Zsb3ciKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0b1Jvd3NHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvUm93cykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEF1dG9Sb3dzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93c0dldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImdyaWRBdXRvUm93cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRBdXRvUm93c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvUm93cywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQXV0b1Jvd3Ms
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZEF1dG9Sb3dzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJncmlkQXV0b1Jvd3MiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQ29sdW1uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkQ29sdW1uIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVt
blNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUdyaWRDb2x1bW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkQ29sdW1uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkVuZEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVt
bkVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1u
RW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZENvbHVtbkVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5FbmRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkQ29sdW1uRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRDb2x1bW5FbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkVuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZENvbHVtbkVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HYXBHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkdhcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uR2FwR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiZ3JpZENvbHVtbkdhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5HYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5HYXAs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtbkdh
cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkQ29sdW1uR2FwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJncmlkQ29sdW1uR2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZENvbHVtblN0YXJ0R2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29sdW1uU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5TdGFydCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU3RhcnRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJncmlkQ29sdW1uU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkQ29sdW1uU3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29s
dW1uU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZENvbHVtblN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRDb2x1bW5TdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZENvbHVtblN0YXJ0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEdhcEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R2FwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkR2FwLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRHYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkR2FwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZEdhcFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUdhcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkR2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2dyaWRHYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWRHYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkUm93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRSb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkUm93Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd1NldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUdyaWRSb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZFJvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkUm93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJncmlkUm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5R3JpZFJvd0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkUm93RW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZFJvd0VuZCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dFbmRTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkUm93RW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRSb3dFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZFJvd0VuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dHYXBHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVJvd0dhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0dhcCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93R2FwR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
Z3JpZFJvd0dhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRSb3dHYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSb3dHYXAsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJvd0dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93R2FwU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkUm93R2Fw
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFJv
d1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkUm93U3RhcnQp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRSb3dTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
Um93U3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkUm93U3RhcnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkUm93U3RhcnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlHcmlkUm93U3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZFJvd1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2dyaWRSb3dTdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZFJvd1N0YXJ0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJncmlkVGVtcGxhdGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGUs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRUZW1wbGF0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiZ3JpZFRlbXBsYXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQXJlYXNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZUFyZWFzKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhcywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhc0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImdyaWRUZW1wbGF0ZUFyZWFzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQXJlYXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlHcmlkVGVtcGxhdGVBcmVhcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVBcmVhc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZFRlbXBsYXRl
QXJlYXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkVGVtcGxhdGVDb2x1bW5zR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkVGVtcGxhdGVDb2x1bW5zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVDb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZUNvbHVtbnNHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJncmlkVGVtcGxhdGVDb2x1bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZFRlbXBsYXRlQ29sdW1uc1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRUZW1w
bGF0ZUNvbHVtbnMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Z3JpZFRlbXBsYXRlQ29sdW1ucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVDb2x1bW5zU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkVGVtcGxhdGVDb2x1
bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZFRlbXBsYXRlUm93c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFRl
bXBsYXRlUm93cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZFRlbXBsYXRlUm93cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkVGVtcGxhdGVSb3dzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZFRlbXBsYXRl
Um93cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRUZW1wbGF0ZVJvd3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRUZW1wbGF0ZVJvd3MsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZFRlbXBsYXRlUm93c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZ3JpZFRlbXBsYXRlUm93cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2hhbmdpbmdQdW5jdHVhdGlvbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5SGFuZ2luZ1B1bmN0dWF0aW9uKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nUHVuY3R1YXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ1B1bmN0dWF0
aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiaGFuZ2luZ1B1bmN0dWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ1B1bmN0dWF0aW9uU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5SGFuZ2luZ1B1bmN0dWF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2hhbmdpbmdQdW5jdHVhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nUHVuY3R1YXRpb25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImhh
bmdpbmdQdW5jdHVhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SGVp
Z2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faGVpZ2h0
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiaGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25faGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SGVpZ2h0LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oZWlnaHRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImhlaWdodCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlT3Jp
ZW50YXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUltYWdlT3JpZW50
YXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ltYWdlT3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25faW1hZ2VPcmllbnRhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImltYWdlT3JpZW50YXRpb24i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZU9y
aWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW1hZ2VPcmllbnRhdGlvbiwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZU9yaWVudGF0aW9uLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlT3Jp
ZW50YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImltYWdlT3JpZW50YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pbWFnZVJlbmRlcmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
aW1hZ2VSZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbWFnZVJlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlUmVuZGVyaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ltYWdlUmVuZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJpbWFnZVJlbmRlcmluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlubGluZVNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25faW5saW5lU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImlubGluZVNpemUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVT
aXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVTaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2lubGluZVNpemVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImlubGluZVNpemUiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5zZXQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUluc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2luc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJpbnNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUluc2V0QmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRCbG9ja0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImluc2V0QmxvY2siKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SW5zZXRCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9pbnNldEJsb2NrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluc2V0QmxvY2siKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5kR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldEJsb2NrRW5kKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5k
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tFbmRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJpbnNldEJsb2NrRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRCbG9ja0VuZFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0
QmxvY2tFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRCbG9ja0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbnNldEJsb2NrRW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRCbG9ja1N0YXJ0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldEJsb2NrU3RhcnQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFy
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU3Rh
cnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJpbnNldEJsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldEJsb2NrU3RhcnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlJbnNldEJsb2NrU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25faW5zZXRCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0QmxvY2tTdGFydFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXRCbG9ja1N0YXJ0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxp
bmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0SW5saW5lKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElu
bGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGlu
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImluc2V0SW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElu
bGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElu
bGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldElubGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXRJbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZUVuZEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5SW5zZXRJbmxpbmVFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lRW5kLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lRW5kR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiaW5zZXRJbmxpbmVFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9pbnNldElubGluZUVuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0SW5saW5lRW5k
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5l
RW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2luc2V0SW5saW5lRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJpbnNldElubGluZUVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnRHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0SW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRJbmxpbmVTdGFy
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImluc2V0SW5saW5lU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldElubGluZVN0YXJ0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5SW5zZXRJbmxpbmVTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldElubGluZVN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0SW5saW5lU3RhcnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImluc2V0SW5saW5lU3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pc29s
YXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlzb2xhdGlvbikpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faXNvbGF0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvbkdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImlzb2xhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2lzb2xhdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlzb2xhdGlvbiwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pc29sYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faXNv
bGF0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJpc29sYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9qdXN0aWZ5Q29udGVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5SnVzdGlmeUNvbnRlbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2p1c3RpZnlDb250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2p1c3RpZnlDb250ZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAianVzdGlmeUNv
bnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5Q29udGVudFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlDb250ZW50LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlD
b250ZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJqdXN0aWZ5Q29udGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX2p1c3RpZnlJdGVtc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5SnVzdGlmeUl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5SXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fanVzdGlmeUl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAianVzdGlmeUl0ZW1z
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlm
eUl0ZW1zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlJdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5SXRlbXNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImp1c3RpZnlJ
dGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2p1
c3RpZnlTZWxmR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5U2Vs
ZikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
anVzdGlmeVNlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVz
dGlmeVNlbGZHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJqdXN0aWZ5U2VsZiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlTZWxmU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SnVzdGlmeVNlbGYsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
anVzdGlmeVNlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fanVzdGlmeVNlbGZTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImp1c3RpZnlTZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fa2VybmluZ0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5S2VybmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fa2VybmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9rZXJuaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAia2VybmluZyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2tlcm5pbmdTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlLZXJuaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2tlcm5pbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fa2VybmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAia2VybmluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2xlZnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUxlZnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bGVmdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9sZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGVmdCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xlZnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxlZnQiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJTcGFjaW5nR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJTcGFj
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xldHRlclNwYWNp
bmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJsZXR0ZXJTcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyU3BhY2luZ1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxl
dHRlclNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
bGV0dGVyU3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9sZXR0ZXJTcGFjaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJsZXR0ZXJTcGFjaW5nIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdDb2xvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdDb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ0NvbG9yR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAibGlnaHRpbmdDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0aW5nQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMaWdodGlu
Z0NvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0
aW5nQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbGlnaHRpbmdDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibGlnaHRpbmdDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVha0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lQnJlYWssIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUJyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGluZUJy
ZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlu
ZUJyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpbmVCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lQnJlYWtTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpbmVCcmVhayIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVIZWlnaHRHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVIZWlnaHQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZUhlaWdodEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImxpbmVIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9saW5lSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUhlaWdodCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lSGVpZ2h0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVI
ZWlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImxpbmVIZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9saXN0U3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxp
c3RTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbGlzdFN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpc3RTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxpc3RTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxp
c3RTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0
U3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbGlzdFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJsaXN0U3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZUltYWdlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZUltYWdlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAibGlzdFN0eWxlSW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0U3R5bGVJbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZUltYWdl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2xpc3RTdHlsZUltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJsaXN0U3R5bGVJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVBvc2l0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJsaXN0U3R5bGVQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVBvc2l0aW9uU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlUG9zaXRpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpc3RTdHls
ZVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGlzdFN0eWxlVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbGlzdFN0eWxlVHlwZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9saXN0U3R5bGVUeXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGlzdFN0eWxlVHlwZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVR5
cGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpc3RTdHlsZVR5cGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdFN0eWxlVHlwZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibGlzdFN0eWxl
VHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW4sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAibWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5TZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbiIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJsb2NrR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9jaykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2ssIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2tHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJtYXJnaW5CbG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmdpbkJsb2NrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2ssIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2ssIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
Z2luQmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1hcmdpbkJsb2NrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luQmxvY2tFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eU1hcmdpbkJsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmdp
bkJsb2NrRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luQmxvY2tFbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja0VuZCwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja0VuZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5CbG9ja0VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAibWFyZ2luQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0YXJ0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJsb2NrU3RhcnRHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJtYXJnaW5CbG9ja1N0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQmxvY2tTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbkJs
b2NrU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
Z2luQmxvY2tTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5CbG9ja1N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW5CbG9ja1N0YXJ0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luQm90dG9tR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbkJvdHRv
bSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5Cb3R0b21H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtYXJnaW5Cb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5Cb3R0b21TZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5C
b3R0b20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2lu
Qm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpbkJvdHRvbVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAibWFyZ2luQm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJtYXJnaW5JbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5JbmxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdp
bklubGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAibWFyZ2luSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luSW5saW5lRW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXJnaW5JbmxpbmVFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbklubGluZUVuZCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVFbmRHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJt
YXJnaW5JbmxpbmVFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5JbmxpbmVFbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmVFbmQsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lRW5k
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbklubGluZUVuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAibWFyZ2luSW5saW5lRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lU3RhcnRHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFy
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVT
dGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmdpbklubGluZVN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luSW5saW5lU3RhcnRTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXJnaW5JbmxpbmVTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5JbmxpbmVTdGFydFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWFyZ2lu
SW5saW5lU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXJnaW5MZWZ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXJnaW5MZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbkxlZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXJnaW5MZWZ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luTGVmdFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eU1hcmdpbkxlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
bWFyZ2luTGVmdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJnaW5MZWZ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW5MZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luUmlnaHRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1h
cmdpblJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luUmlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5SaWdodFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibWFy
Z2luUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXJnaW5Ub3BHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblRv
cCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bWFyZ2luVG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdp
blRvcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmdpblRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpblRvcFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5Ub3As
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWFyZ2luVG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJtYXJnaW5Ub3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJrZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eU1hcmtlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFya2VyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmtlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlciwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXIsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJr
ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlckVuZCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2Vy
RW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlckVuZEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIm1hcmtlckVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmtlckVuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlckVuZCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJFbmQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFy
a2VyRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJtYXJrZXJFbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJrZXJNaWRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmtlck1pZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFya2VyTWlkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmtlck1pZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hcmtlck1pZCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlck1pZFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmtlck1pZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJNaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWFya2VyTWlkU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJtYXJrZXJNaWQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5TWFya2VyU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWFya2VyU3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJr
ZXJTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlclN0YXJ0U2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJrZXJTdGFy
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hc2spKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2ssIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFza0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1hc2si
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5TWFzaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXNrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hc2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIm1hc2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXNrVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWFza1R5cGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hc2tUeXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX21hc2tUeXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWFza1R5cGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrVHlwZVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
c2tUeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tU
eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21hc2tUeXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJtYXNrVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21hdGhTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWF0aFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXRoU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF0aFN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWF0aFN0eWxlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF0aFN0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWF0aFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hdGhTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXRoU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hdGhTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJsb2NrU2l6ZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TWF4QmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhCbG9ja1NpemUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4QmxvY2tTaXplR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAibWF4QmxvY2tTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF4QmxvY2tTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4QmxvY2tTaXplLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heEJsb2NrU2l6ZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhC
bG9ja1NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1heEJsb2NrU2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX21heEhlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWF4SGVpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXhIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbWF4SGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWF4SGVpZ2h0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SGVpZ2h0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWF4SGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heEhlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXhIZWlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1heEhlaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21heElubGluZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1heElubGluZVNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21heElubGluZVNpemUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4SW5saW5lU2l6ZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIm1heElubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXhJbmxpbmVTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhJbmxpbmVTaXplLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heElubGluZVNpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIm1heElubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWF4V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX21heFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX21heFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWF4V2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhXaWR0aFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1heFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21heFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21heFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJtYXhXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkJsb2NrU2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5CbG9ja1NpemUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluQmxvY2tTaXplR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWlu
QmxvY2tTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbWluQmxvY2tTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkJsb2NrU2l6ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5CbG9ja1Np
emVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1pbkJsb2NrU2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbkhlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWlu
SGVpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9taW5IZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
bWluSGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWluSGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWlu
SGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbkhl
aWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9taW5IZWlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIm1pbkhlaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX21pbklubGluZVNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eU1pbklubGluZVNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21pbklubGluZVNpemUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWluSW5saW5lU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1p
bklubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9taW5JbmxpbmVTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluSW5saW5lU2l6ZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5JbmxpbmVTaXplLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbklu
bGluZVNpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1pbklubGluZVNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9taW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWluV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21pbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX21pbldpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWluV2lkdGgiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5XaWR0aFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1p
bldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbldp
ZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbldpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJtaW5XaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWl4QmxlbmRNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9taXhCbGVuZE1vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWl4QmxlbmRNb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWl4QmxlbmRN
b2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWl4
QmxlbmRNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWl4QmxlbmRNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21peEJsZW5kTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhCbGVuZE1vZGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peEJs
ZW5kTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X29iamVjdEZpdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0Rml0
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
YmplY3RGaXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0
Rml0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAib2JqZWN0Rml0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0Rml0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0Rml0
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29iamVjdEZpdCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vYmplY3RGaXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIm9iamVjdEZpdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX29iamVjdFBvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlPYmplY3RQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0UG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0UG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvYmpl
Y3RQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX29iamVjdFBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0UG9zaXRpb24sIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0UG9zaXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2Jq
ZWN0UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIm9iamVjdFBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fb3BhY2l0eUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fb3BhY2l0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vcGFjaXR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29wYWNpdHlTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcGFj
aXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29wYWNpdHks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fb3BhY2l0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAib3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX29yZGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcmRl
cikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
b3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3JkZXJHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJvcmRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX29yZGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3JkZXIsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JkZXJTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9yZGVyIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFuc0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3JwaGFucykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFucywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vcnBoYW5zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3JwaGFu
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX29ycGhh
bnNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlPcnBoYW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX29ycGhhbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3JwaGFuc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3JwaGFucyIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm91dGxpbmUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5T3V0bGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdXRsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX291dGxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIm91dGxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUNvbG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm91
dGxpbmVDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX291dGxpbmVDb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lQ29sb3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZUNv
bG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJvdXRsaW5lQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9vdXRsaW5lT2Zmc2V0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlPdXRsaW5lT2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9vdXRsaW5lT2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX291dGxpbmVPZmZzZXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lT2Zmc2V0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGlu
ZU9mZnNldFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZU9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lT2Zmc2V0U2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdXRs
aW5lT2Zmc2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fb3V0bGluZVN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRs
aW5lU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX291dGxpbmVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdXRsaW5lU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lU3R5bGUiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lU3R5bGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3V0bGluZVN0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVTdHlsZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZVN0eWxlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZVdpZHRo
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVX
aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lV2lk
dGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lV2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRs
aW5lV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0
bGluZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX291dGxpbmVXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlPdmVyZmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vdmVyZmxvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3ZlcmZsb3ciKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1dyYXBHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dXcmFwLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93V3JhcEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIm92ZXJmbG93V3JhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJmbG93V3JhcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1dyYXAsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcmZsb3dXcmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJvdmVyZmxvd1dyYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eU92ZXJmbG93WCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dYLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJmbG93WEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93WCIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eU92ZXJmbG93WCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdmVyZmxvd1gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dYU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdmVyZmxvd1giKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1lHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93WSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dZLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93WUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93
WSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJm
bG93WVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93WSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd1ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dZU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdmVyZmxvd1kiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZp
b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlv
cikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcnNjcm9sbEJlaGF2aW9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX292ZXJzY3JvbGxCZWhhdmlvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJzY3JvbGxCZWhhdmlv
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxCZWhhdmlvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcnNjcm9sbEJlaGF2aW9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJvdmVyc2Nyb2xsQmVoYXZpb3IiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsQmVoYXZpb3JYR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3JYKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xs
QmVoYXZpb3JYLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxCZWhhdmlvclhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdmVyc2Nyb2xsQmVoYXZpb3JYIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJl
aGF2aW9yWFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlvclgsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVy
c2Nyb2xsQmVoYXZpb3JYU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJvdmVyc2Nyb2xsQmVoYXZpb3JYIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJlaGF2aW9yWUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcnNjcm9sbEJlaGF2aW9yWSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbEJl
aGF2aW9yWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Ny
b2xsQmVoYXZpb3JZR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3ZlcnNjcm9sbEJlaGF2aW9yWSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhh
dmlvcllTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3JZLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxCZWhhdmlvclksIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNj
cm9sbEJlaGF2aW9yWVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAib3ZlcnNjcm9sbEJlaGF2aW9yWSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVBhZGRpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmciKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGFkZGluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBhZGRpbmdCbG9jaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmdC
bG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdCbG9ja1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2ssIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWRk
aW5nQmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWRkaW5nQmxvY2tFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBh
ZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ0Jsb2NrRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja0VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmdCbG9j
a0VuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdCbG9ja0VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tFbmQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGlu
Z0Jsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJwYWRkaW5nQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5UGFkZGluZ0Jsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja1N0YXJ0R2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAicGFkZGluZ0Jsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQmxvY2tTdGFydFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBh
ZGRpbmdCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCbG9ja1N0YXJ0U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWRkaW5nQmxvY2tTdGFy
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdCb3R0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0
b20pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhZGRpbmdCb3R0b20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0JvdHRvbUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmdCb3R0b20iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nQm90dG9tU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdCb3R0b21TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmdCb3R0b20iKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5s
aW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRk
aW5nSW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdJbmxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWRkaW5nSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVBhZGRpbmdJbmxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFkZGluZ0lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWRkaW5nSW5saW5lIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZUVu
ZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0lubGluZUVuZCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ0lubGluZUVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nSW5saW5lRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZ0lubGluZUVuZCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVF
bmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVFbmQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZUVu
ZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
cGFkZGluZ0lubGluZUVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdJbmxpbmVTdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ0lubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lU3RhcnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVN0YXJ0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicGFkZGluZ0lubGluZVN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ0lubGluZVN0YXJ0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFk
ZGluZ0lubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZGRpbmdJbmxpbmVTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nSW5saW5lU3RhcnRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmdJbmxpbmVT
dGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdMZWZ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nTGVm
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ0xlZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWRkaW5nTGVmdCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdMZWZ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
UGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFkZGluZ0xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ0xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmdMZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdSaWdodCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nUmlnaHRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJwYWRkaW5nUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nUmlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1JpZ2h0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
ZGRpbmdSaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAicGFkZGluZ1JpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5UGFkZGluZ1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nVG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZ1RvcCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdUb3BTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlQYWRkaW5nVG9wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdUb3AsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ1RvcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGFkZGluZ1RvcCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZ2UiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFn
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bh
Z2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InBhZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWdlQnJlYWtBZnRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJy
ZWFrQWZ0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3BhZ2VCcmVha0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3BhZ2VCcmVha0FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFnZUJyZWFrQWZ0ZXIiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtB
ZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0FmdGVyU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWdl
QnJlYWtBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VCcmVha0JlZm9yZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
UGFnZUJyZWFrQmVmb3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFnZUJyZWFr
QmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cGFnZUJyZWFrQmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0JlZm9yZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdl
QnJlYWtCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInBhZ2VCcmVha0JlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVha0luc2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlQnJlYWtJbnNpZGUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5zaWRlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAicGFnZUJyZWFrSW5zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZUJyZWFrSW5zaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5z
aWRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VCcmVh
a0luc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWdlQnJlYWtJbnNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZ2VCcmVha0luc2lkZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50T3JkZXJHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhaW50T3JkZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50T3JkZXIsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFpbnRPcmRlckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InBhaW50T3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWludE9yZGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFpbnRPcmRlciwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludE9yZGVyLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50T3JkZXJTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhaW50
T3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3Rp
dmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3BlcnNwZWN0aXZlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Bl
cnNwZWN0aXZlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGVyc3BlY3RpdmUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVBlcnNwZWN0aXZlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3BlcnNwZWN0aXZlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwZXJzcGVjdGl2ZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVP
cmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3Rp
dmVPcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwZXJzcGVjdGl2ZU9yaWdpbiIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBl
cnNwZWN0aXZlT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcGVyc3BlY3RpdmVPcmlnaW5YR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpblhHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJwZXJzcGVjdGl2ZU9yaWdpblgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpblhTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJz
cGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGVyc3BlY3RpdmVPcmlnaW5YLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGVyc3BlY3RpdmVPcmln
aW5YIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGVy
c3BlY3RpdmVPcmlnaW5ZR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJz
cGVjdGl2ZU9yaWdpblkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbllHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwZXJz
cGVjdGl2ZU9yaWdpblkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wZXJzcGVjdGl2ZU9yaWdpbllTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdp
blksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3Rp
dmVPcmlnaW5ZLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlT3JpZ2luWVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGVyc3BlY3RpdmVPcmlnaW5ZIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VDb250ZW50R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQbGFjZUNvbnRlbnQpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlQ29udGVu
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUNvbnRlbnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJwbGFjZUNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQbGFjZUNv
bnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VD
b250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BsYWNlQ29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAicGxhY2VDb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtc0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5UGxhY2VJdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZUl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGxhY2VJ
dGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bs
YWNlSXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQbGFjZUl0ZW1zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlSXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VJdGVtc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGxhY2VJdGVtcyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlU2Vs
ZkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGxhY2VTZWxmKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZVNlbGYs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VTZWxmR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAicGxhY2VTZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fcGxhY2VTZWxmU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGxhY2VTZWxmLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlU2VsZiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZVNl
bGZTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InBsYWNlU2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3BvaW50ZXJFdmVudHNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBv
aW50ZXJFdmVudHMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BvaW50ZXJFdmVudHMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fcG9pbnRlckV2ZW50c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBvaW50ZXJFdmVudHMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyRXZl
bnRzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyRXZlbnRzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50ZXJFdmVudHNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBvaW50ZXJF
dmVudHMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
b3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UG9zaXRpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0aW9uR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAicG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBvc2l0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0aW9uLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Bvc2l0aW9u
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJw
b3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3F1b3Rlc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UXVvdGVzKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9xdW90ZXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcXVvdGVzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicXVvdGVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fcXVvdGVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UXVvdGVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3F1b3RlcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9xdW90ZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInF1b3RlcyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UiwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInIiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yZXNpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVJlc2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcmVzaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3Jlc2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInJlc2l6ZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jlc2l6ZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVJlc2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yZXNp
emUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcmVzaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJyZXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9yaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Umln
aHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3JpZ2h0R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAicmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9yaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVJpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3JpZ2h0U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJyaWdodCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3JvdGF0ZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Um90YXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3RhdGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicm90YXRlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm90YXRlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Um90YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3JvdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9yb3RhdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInJvdGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Um93R2FwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9yb3dHYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcm93R2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicm93R2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93R2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Um93R2Fw
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Jvd0dhcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9y
b3dHYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgInJvd0dhcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3J4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSeCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcngsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcnhHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJyeCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3J4U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UngsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
cngsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcnhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInJ4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fcnlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVJ5KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9yeUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInJ5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcnlTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlSeSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9y
eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9yeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAicnkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY2FsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2NhbGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAic2NhbGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY2FsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjYWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NjYWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY2FsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbEJlaGF2aW9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3JHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJzY3JvbGxCZWhhdmlvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbEJlaGF2aW9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xs
QmVoYXZpb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsQmVoYXZpb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsQmVoYXZpb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbEJlaGF2aW9yIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW4pKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5HZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGxNYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW4s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2lu
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbE1hcmdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAic2Nyb2xsTWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jaywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbkJsb2NrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTY3JvbGxNYXJnaW5CbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsTWFyZ2lu
QmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxNYXJnaW5CbG9ja0VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsTWFyZ2luQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAic2Nyb2xsTWFyZ2luQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja0VuZFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNj
cm9sbE1hcmdpbkJsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrRW5kU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxN
YXJnaW5CbG9ja0VuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkJsb2NrU3RhcnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luQmxvY2tT
dGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbkJsb2NrU3RhcnQiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja1N0
YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5CbG9ja1N0YXJ0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbE1hcmdpbkJsb2NrU3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbE1hcmdpbkJsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5Cb3R0b21HZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbE1hcmdpbkJvdHRvbUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbkJvdHRvbSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdp
bkJvdHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5Cb3R0b20sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luQm90dG9tU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJzY3JvbGxNYXJnaW5Cb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5l
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklu
bGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbklubGluZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5l
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJz
Y3JvbGxNYXJnaW5JbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luSW5saW5lRW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGlu
ZUVuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbE1hcmdpbklubGluZUVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZUVu
ZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVFbmQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
TWFyZ2luSW5saW5lRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGxNYXJnaW5JbmxpbmVFbmQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVTdGFydEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luSW5saW5lU3RhcnQp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbE1hcmdpbklubGluZVN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbE1hcmdpbklubGluZVN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsTWFy
Z2luSW5saW5lU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxNYXJnaW5JbmxpbmVTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdp
bklubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbE1hcmdpbklubGluZVN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbklubGluZVN0YXJ0U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxN
YXJnaW5JbmxpbmVTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkxlZnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luTGVmdEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InNjcm9sbE1hcmdpbkxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5MZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVm
dCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJn
aW5MZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbE1hcmdpbkxlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbE1hcmdpbkxlZnQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5SaWdodEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1h
cmdpblJpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bE1hcmdpblJpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsTWFyZ2luUmlnaHQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5SaWdo
dFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblJpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblJpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblJp
Z2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJzY3JvbGxNYXJnaW5SaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxNYXJnaW5Ub3AsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsTWFyZ2luVG9wR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c2Nyb2xsTWFyZ2luVG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsTWFyZ2luVG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbE1hcmdpblRv
cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxNYXJnaW5Ub3BTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbE1hcmdpblRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInNjcm9sbFBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbFBhZGRpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInNjcm9sbFBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9jaykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2Nr
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdC
bG9ja0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbFBhZGRpbmdCbG9jayIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2ssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2Nr
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJz
Y3JvbGxQYWRkaW5nQmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tFbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0Jsb2NrRW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9j
a0VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbFBhZGRpbmdCbG9ja0VuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja0Vu
ZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tFbmQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
UGFkZGluZ0Jsb2NrRW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGxQYWRkaW5nQmxvY2tFbmQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFydEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0Jsb2NrU3RhcnQp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbFBhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja1N0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsUGFk
ZGluZ0Jsb2NrU3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxQYWRkaW5nQmxvY2tTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRp
bmdCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbFBhZGRpbmdCbG9ja1N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCbG9ja1N0YXJ0U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxQ
YWRkaW5nQmxvY2tTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCb3R0b20pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b20sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0JvdHRvbUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgInNjcm9sbFBhZGRpbmdCb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQm90dG9tU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsUGFkZGluZ0JvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdCb3R0b21TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9s
bFBhZGRpbmdCb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTY3JvbGxQYWRkaW5nSW5saW5lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGxQYWRkaW5nSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVNjcm9sbFBhZGRpbmdJbmxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxQ
YWRkaW5nSW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZUVuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0lubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZUVuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5saW5l
RW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsUGFkZGluZ0lubGluZUVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVF
bmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVFbmQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsUGFkZGluZ0lubGluZUVuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsUGFkZGluZ0lubGluZUVuZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVTdGFy
dEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0lubGlu
ZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxQYWRkaW5nSW5saW5lU3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsUGFkZGluZ0lubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdJbmxpbmVTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nSW5s
aW5lU3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInNjcm9sbFBhZGRpbmdJbmxpbmVTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nTGVmdCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xlZnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xl
ZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGxQYWRkaW5nTGVmdCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdMZWZ0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsUGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFkZGluZ0xlZnRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbFBh
ZGRpbmdMZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZ1JpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTY3JvbGxQYWRkaW5nUmlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdSaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nUmlnaHRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJzY3JvbGxQYWRkaW5nUmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxQYWRkaW5nUmlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRk
aW5nUmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsUGFkZGluZ1JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdSaWdodFNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsUGFkZGluZ1JpZ2h0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFk
ZGluZ1RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGlu
Z1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsUGFkZGluZ1RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxQYWRkaW5nVG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsUGFkZGluZ1RvcCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBh
ZGRpbmdUb3BTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nVG9wLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFBhZGRpbmdUb3AsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsUGFk
ZGluZ1RvcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAic2Nyb2xsUGFkZGluZ1RvcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBBbGlnbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsU25hcEFsaWduKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwQWxpZ24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcEFsaWduR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAic2Nyb2xsU25hcEFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsU25hcEFsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcEFsaWdu
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBB
bGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zY3JvbGxTbmFwQWxpZ25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbFNuYXBBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2lu
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsU25hcE1hcmdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTY3JvbGxNYXJnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsU25hcE1hcmdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGxTbmFwTWFyZ2luIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25h
cE1hcmdpbkJvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xs
TWFyZ2luQm90dG9tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0b21HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJzY3JvbGxTbmFwTWFyZ2luQm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkJvdHRvbVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNj
cm9sbE1hcmdpbkJvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxTbmFwTWFyZ2luQm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Cb3R0b21TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9s
bFNuYXBNYXJnaW5Cb3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkxlZnQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpbkxlZnRHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJzY3JvbGxTbmFwTWFyZ2luTGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5MZWZ0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luTGVmdFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Ny
b2xsU25hcE1hcmdpbkxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luUmlnaHRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luUmlnaHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsU25hcE1hcmdpblJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblJpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJn
aW5SaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAic2Nyb2xsU25hcE1hcmdpblJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luVG9wLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5U
b3BHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGxTbmFwTWFyZ2luVG9wIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcE1hcmdpblRvcFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbE1hcmdpblRvcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxTbmFwTWFyZ2luVG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBNYXJnaW5Ub3BT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNj
cm9sbFNuYXBNYXJnaW5Ub3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxTbmFwU3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsU25hcFN0b3ApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBTdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBTdG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xs
U25hcFN0b3AiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxTbmFwU3RvcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFNuYXBTdG9wLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBTdG9wLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bFNuYXBTdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJzY3JvbGxTbmFwU3RvcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbFNuYXBUeXBlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlTY3JvbGxTbmFwVHlwZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcFR5cGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcFR5cGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJz
Y3JvbGxTbmFwVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbFNuYXBUeXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsU25hcFR5cGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsU25hcFR5cGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInNjcm9sbFNuYXBUeXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVJbWFnZVRocmVzaG9sZEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVJbWFnZVRocmVzaG9s
ZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZUltYWdlVGhy
ZXNob2xkR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2hhcGVJbWFnZVRocmVzaG9sZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlSW1hZ2VUaHJlc2hvbGQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVJbWFnZVRo
cmVzaG9sZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAic2hhcGVJbWFnZVRocmVzaG9sZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlTWFyZ2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlTaGFwZU1hcmdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZU1hcmdp
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBl
TWFyZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVNYXJnaW5TZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNoYXBlTWFyZ2lu
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVP
dXRzaWRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaGFwZU91dHNpZGUp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3No
YXBlT3V0c2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFw
ZU91dHNpZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZU91dHNpZGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZU91dHNpZGVTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTaGFwZU91dHNpZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2hhcGVPdXRzaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlT3V0c2lkZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2hhcGVPdXRzaWRlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVSZW5kZXJpbmdHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmlu
ZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmlu
Z0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInNoYXBlUmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVSZW5kZXJpbmdTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlT
aGFwZVJlbmRlcmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zaGFwZVJlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZVJlbmRlcmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2hhcGVSZW5kZXJpbmciKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaXplR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3NpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaXplIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2l6ZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2l6ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJzaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc3BlYWtBc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3BlYWtBcykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Bl
YWtBcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha0FzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAic3BlYWtBcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3NwZWFrQXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTcGVha0FzLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrQXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3BlYWtBc1NldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3BlYWtB
cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3NyY0dl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3JjKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcmMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3JjR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3JjIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3JjU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U3JjLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ny
YywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zcmNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInNyYyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3N0b3BDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3RvcENv
bG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdG9wQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Rv
cENvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3RvcENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3RvcENv
bG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BDb2xv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdG9wQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInN0b3BDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0b3BPcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTdG9wT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdG9wT3BhY2l0eSIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BPcGFj
aXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U3RvcE9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3RvcE9wYWNpdHlTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0b3BPcGFjaXR5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2UpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJz
dHJva2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc3Ryb2tlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlQ29sb3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9rZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InN0cm9rZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VDb2xv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
c3Ryb2tlQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdHJva2VEYXNoYXJyYXlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVN0cm9rZURhc2hhcnJheSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaGFycmF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hhcnJheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInN0cm9rZURh
c2hhcnJheSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZURhc2hhcnJheVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNoYXJyYXksIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ry
b2tlRGFzaGFycmF5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJzdHJva2VEYXNoYXJyYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0R2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZURhc2hvZmZzZXRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzdHJva2VEYXNob2Zmc2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlRGFzaG9mZnNldFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9r
ZURhc2hvZmZzZXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c3Ryb2tlRGFzaG9mZnNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VEYXNob2Zmc2V0U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJva2VEYXNob2Zmc2V0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWNh
cEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
TGluZWNhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VM
aW5lY2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlTGluZWNhcCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVjYXBTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlTdHJva2VMaW5lY2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3N0cm9rZUxpbmVjYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWNhcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlTGluZWNhcCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVqb2luR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGlu
ZWpvaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGlu
ZWpvaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2VMaW5lam9pbiIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZUxpbmVqb2luU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWpvaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlTGluZWpvaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTGluZWpvaW5TZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZUxpbmVqb2luIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTWl0ZXJs
aW1pdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1p
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c3Ryb2tlTWl0ZXJsaW1pdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdHJva2VNaXRlcmxpbWl0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlTWl0ZXJsaW1pdCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVy
bGltaXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU1pdGVybGltaXQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlTWl0ZXJs
aW1pdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAic3Ryb2tlTWl0ZXJsaW1pdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVN0cm9rZU9wYWNpdHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlT3BhY2l0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInN0cm9rZU9w
YWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VPcGFjaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VPcGFjaXR5LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZU9wYWNp
dHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InN0cm9rZU9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdHJva2VXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U3Ryb2tlV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0cm9rZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3N0cm9rZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlV2lkdGgiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VXaWR0aFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVN0cm9rZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0cm9rZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJva2VXaWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZENvbG9yU2No
ZW1lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JTY2hlbWUpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBv
cnRlZENvbG9yU2NoZW1lcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdXBwb3J0ZWRDb2xvclNjaGVtZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdXBwb3J0ZWRDb2xvclNj
aGVtZXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dXBwb3J0ZWRDb2xvclNjaGVtZXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2xvclNjaGVtZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdXBwb3J0ZWRDb2xvclNjaGVtZXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc3VwcG9ydGVkQ29sb3JTY2hlbWVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdXBwb3J0ZWRDb2xvclNjaGVtZXMiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUYWJTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RhYlNpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0YWJTaXpl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGFiU2l6
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVRhYlNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGFiU2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJTaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0YWJTaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVMYXlvdXRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InRhYmxlTGF5b3V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGFibGVMYXlvdXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUYWJsZUxheW91dCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91dCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZUxheW91
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
dGFibGVMYXlvdXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0QWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRB
bGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEFsaWduLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRBbGlnbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRBbGlnblNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRB
bGlnbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0QWxp
Z24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dEFsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ0ZXh0QWxpZ24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0QW5jaG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUZXh0QW5jaG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0QW5jaG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRBbmNob3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0QW5jaG9yIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEFuY2hvclNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVRleHRBbmNob3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dEFuY2hvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0QW5jaG9yU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0QW5jaG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25HZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3Jh
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3Jh
dGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHREZWNvcmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dERlY29yYXRpb24iKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlv
bkNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
bkNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RGVjb3JhdGlvbkNvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHREZWNvcmF0aW9uQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3Jh
dGlvbkNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dERlY29yYXRpb25Db2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3Is
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRp
b25Db2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvbkNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0RGVjb3JhdGlvbkNvbG9yIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25M
aW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxp
bmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uTGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RGVjb3JhdGlvbkxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3JhdGlvbkxp
bmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
RGVjb3JhdGlvbkxpbmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25MaW5lLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHREZWNvcmF0aW9uTGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAidGV4dERlY29yYXRpb25MaW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Ta2lwR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXApKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0
aW9uU2tpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVj
b3JhdGlvblNraXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3JhdGlvblNraXAiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblNr
aXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25Ta2lwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0
aW9uU2tpcFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAidGV4dERlY29yYXRpb25Ta2lwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25TdHlsZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25TdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RGVjb3JhdGlvblN0
eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU3R5bGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25T
dHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAidGV4dERlY29yYXRpb25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHREZWNvcmF0aW9uVGhpY2tuZXNzR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25U
aGlja25lc3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERl
Y29yYXRpb25UaGlja25lc3NHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25UaGlja25lc3Ms
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRp
b25UaGlja25lc3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dERlY29yYXRpb25UaGlja25lc3NTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dEVtcGhhc2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0RW1waGFzaXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0RW1waGFzaXMiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dEVtcGhhc2lz
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVt
cGhhc2lzQ29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRF
bXBoYXNpc0NvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dEVtcGhhc2lzQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1w
aGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNQb3Np
dGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4
dEVtcGhhc2lzUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0RW1waGFzaXNQb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1Bvc2l0aW9uU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0RW1waGFz
aXNQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3RleHRFbXBoYXNpc1N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJ0ZXh0RW1waGFzaXNTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dEVtcGhhc2lzU3R5bGVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHRFbXBoYXNpc1N0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dElu
ZGVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEluZGVudCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dElu
ZGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0SW5kZW50
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAidGV4dEluZGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRJbmRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0SW5kZW50
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRJbmRlbnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dEluZGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAidGV4dEluZGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0T3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE9yaWVudGF0aW9uR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAidGV4dE9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dE9yaWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9u
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPcmllbnRh
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90ZXh0T3JpZW50YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvd0dldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0T3ZlcmZsb3csIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dE92ZXJmbG93R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAidGV4dE92ZXJmbG93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dE92ZXJmbG93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRPdmVyZmxvdywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0T3ZlcmZsb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInRleHRPdmVyZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRSZW5kZXJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFJlbmRlcmluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRS
ZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0UmVuZGVyaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZywgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0UmVuZGVyaW5nLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRSZW5k
ZXJpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgInRleHRSZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0U2hhZG93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0U2hhZG93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0U2hhZG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRTaGFkb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0U2hhZG93Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFNoYWRvd1NldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVRleHRTaGFkb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dFNoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0U2hhZG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0U2hhZG93Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFRyYW5zZm9ybSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VHJhbnNmb3JtR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAidGV4dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRUcmFuc2Zvcm1TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRUcmFu
c2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdGV4dFRyYW5zZm9ybVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxpbmVPZmZzZXRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVPZmZzZXQpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRVbmRlcmxp
bmVPZmZzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFVu
ZGVybGluZU9mZnNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRVbmRlcmxpbmVPZmZzZXQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5l
T2Zmc2V0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU9mZnNldCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lT2Zmc2V0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRV
bmRlcmxpbmVPZmZzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInRleHRVbmRlcmxpbmVPZmZzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lUG9zaXRpb25HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dFVuZGVy
bGluZVBvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRVbmRlcmxpbmVQb3NpdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHRVbmRlcmxpbmVQb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRV
bmRlcmxpbmVQb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbiwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0VW5kZXJsaW5lUG9z
aXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdGV4dFVuZGVybGluZVBvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0VW5kZXJsaW5lUG9zaXRpb24iKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3BHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3RvcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRvcCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvcFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRv
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3AsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdG9w
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0
b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3Vj
aEFjdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VG91Y2hBY3Rpb24p
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rv
dWNoQWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNo
QWN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidG91Y2hBY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaEFjdGlvblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRv
dWNoQWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Rv
dWNoQWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RvdWNoQWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0b3VjaEFjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNmb3Jt
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNm
b3JtU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1TZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybUJveEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtQm94KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1Cb3gs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtQm94R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAidHJhbnNmb3JtQm94Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtQm94U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3Jt
Qm94LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9y
bUJveCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1Cb3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybUJveCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAidHJhbnNmb3JtT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNm
b3JtT3JpZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zZm9ybU9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybU9yaWdpbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblhH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblgpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
Zm9ybU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJh
bnNmb3JtT3JpZ2luWEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zZm9ybU9yaWdpblgiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5Y
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5YLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblhT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRy
YW5zZm9ybU9yaWdpblgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5ZR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2Zvcm1PcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5ZLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpbllHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0
cmFuc2Zvcm1PcmlnaW5ZIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3Jp
Z2luWSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2Zvcm1PcmlnaW5ZU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2Zvcm1PcmlnaW5ZIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWkdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3Jp
Z2luWiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1P
cmlnaW5aR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNmb3JtT3JpZ2luWiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblpTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybU9yaWdpblosIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtT3JpZ2luWlNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNmb3Jt
T3JpZ2luWiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zZm9ybVN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm1TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0cmFuc2Zvcm1TdHlsZSIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9y
bVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtU3R5bGUsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtU3R5bGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRy
YW5zZm9ybVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJh
bnNpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EZWxheUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvbkRlbGF5KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uRGVsYXksIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbkRlbGF5U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJh
bnNpdGlvbkRlbGF5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zaXRpb25EZWxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uRGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zaXRpb25EZWxheSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EdXJh
dGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0
aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uRHVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fdHJhbnNpdGlvbkR1cmF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvbkR1cmF0
aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJh
bnNpdGlvbkR1cmF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25EdXJhdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uRHVyYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zaXRpb25EdXJhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25Qcm9wZXJ0eUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
UHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNp
dGlvblByb3BlcnR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvblByb3BlcnR5Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvblByb3Bl
cnR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25Qcm9wZXJ0eSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
UHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInRyYW5zaXRpb25Qcm9wZXJ0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbkdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uVGltaW5nRnVuY3Rpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RyYW5zbGF0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VHJhbnNsYXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl90cmFuc2xhdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdHJhbnNsYXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNsYXRlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNsYXRlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VHJhbnNsYXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zbGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2xhdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zbGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVCaWRpR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmljb2Rl
QmlkaSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Vu
aWNvZGVCaWRpU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGksIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZUJpZGlTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInVuaWNvZGVC
aWRpIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdW5p
Y29kZVJhbmdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlVbmljb2RlUmFu
Z2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3VuaWNvZGVSYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl91
bmljb2RlUmFuZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ1bmljb2RlUmFuZ2UiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlUmFuZ2VTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlVbmljb2RlUmFuZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdW5pY29kZVJhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVSYW5nZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidW5pY29kZVJhbmdlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZmZWN0R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3QpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3RvckVmZmVjdCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JFZmZlY3RHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ2ZWN0b3JFZmZlY3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JFZmZlY3RTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlWZWN0b3JFZmZl
Y3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yRWZm
ZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3ZlY3RvckVmZmVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAidmVjdG9yRWZmZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxBbGlnbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VmVydGljYWxBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxBbGlnbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZXJ0aWNhbEFsaWduR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAidmVydGljYWxBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3ZlcnRpY2FsQWxpZ25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlcnRpY2FsQWxpZ24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dmVydGljYWxBbGlnblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAidmVydGljYWxBbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVZpc2liaWxpdHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdmlzaWJpbGl0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInZpc2liaWxpdHkiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl92aXNpYmlsaXR5
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl92aXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Zpc2liaWxpdHlTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInZpc2liaWxpdHkiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNwYWNlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNwYWNlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlU3BhY2VHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJ3aGl0ZVNwYWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2hpdGVTcGFjZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVTcGFjZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZVNw
YWNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJ3aGl0ZVNwYWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2lkb3dzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXaWRvd3Mp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dp
ZG93cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWRvd3NHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3aWRvd3MiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93aWRvd3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXaWRvd3MsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkb3dzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dpZG93c1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2lkb3dzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndpZHRoIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lkdGhTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXaWxsQ2hhbmdlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3dpbGxDaGFuZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3aWxsQ2hhbmdlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbENoYW5nZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdpbGxDaGFuZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2lsbENoYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWxsQ2hhbmdlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aWxsQ2hhbmdlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZEJyZWFrR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkQnJlYWspKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVhaywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkQnJlYWtHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3b3JkQnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93b3JkQnJlYWtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkQnJlYWssIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZEJyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRCcmVha1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid29yZEJyZWFr
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFNw
YWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3Jk
U3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkU3Bh
Y2luZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndvcmRTcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZFNwYWNpbmdTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3Jk
U3BhY2luZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3Jk
U3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93b3JkU3BhY2luZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid29yZFNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkV3JhcEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V29yZFdyYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRXcmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3dvcmRXcmFwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid29yZFdyYXAiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkV3JhcFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdvcmRXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dvcmRXcmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dvcmRXcmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3b3JkV3JhcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdNb2RlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
cml0aW5nTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dyaXRpbmdNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ01vZGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndy
aXRpbmdNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25feEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5WCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25feCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl94R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAieCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3hTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlYLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3gsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25feFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAieCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3lHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25feUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInkiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl95U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5WSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl95LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3lTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInkiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96SW5kZXhHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVpJbmRleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fekluZGV4LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3pJbmRleEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInpJbmRleCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3pJbmRleFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVpJbmRleCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl96SW5kZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fekluZGV4U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ6SW5kZXgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl96b29tR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlab29tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl96b29tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3pv
b21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ6b29tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fem9vbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVpvb20sIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fem9vbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl96b29tU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ6b29tIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFs
aWduQ29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRBbGlnbkNvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbGlnbkNvbnRlbnQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnbkNv
bnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25Db250ZW50LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduQ29u
dGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAid2Via2l0QWxpZ25Db250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25JdGVtc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QWxpZ25JdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25JdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnbkl0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
d2Via2l0QWxpZ25JdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduSXRlbXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QWxpZ25JdGVtc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QWxpZ25JdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWduU2VsZkdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxmKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbGlnblNlbGYsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAid2Via2l0QWxpZ25TZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWxpZ25TZWxmU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25TZWxm
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsaWdu
U2VsZiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbGlnblNlbGZTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFsaWduU2VsZiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFsdEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5QWx0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWx0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QWx0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QWx0
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QWx0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFsdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFsdCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0QW5pbWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFu
aW1hdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkRlbGF5R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5p
bWF0aW9uRGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uRGVsYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmltYXRpb25EZWxheSIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFu
aW1hdGlvbkRlbGF5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGVsYXksIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRGVsYXksIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uRGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEFuaW1hdGlvbkRpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRBbmltYXRpb25EaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmlt
YXRpb25EaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbmltYXRpb25EaXJlY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25E
aXJlY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uRGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkRpcmVjdGlvblNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRHVyYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFuaW1hdGlvbkR1cmF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJhdGlvbiwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJh
dGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uRHVy
YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25EdXJhdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRBbmltYXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QW5pbWF0aW9uRHVyYXRpb24iKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9k
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGUp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QW5p
bWF0aW9uRmlsbE1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRBbmltYXRpb25GaWxsTW9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZp
bGxNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEFuaW1hdGlvbkZpbGxNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbkZpbGxNb2RlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRBbmltYXRp
b25GaWxsTW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uSXRlcmF0
aW9uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uSXRlcmF0aW9uQ291bnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uSXRl
cmF0aW9uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uTmFtZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0
aW9uTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRB
bmltYXRpb25OYW1lR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QW5pbWF0aW9uTmFtZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlv
bk5hbWVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvbk5hbWUsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0
aW9uTmFtZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0QW5pbWF0aW9uTmFtZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25Q
bGF5U3RhdGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QW5pbWF0aW9uUGxheVN0YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QW5pbWF0aW9uUGxheVN0
YXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0QW5pbWF0aW9uUGxheVN0YXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFuaW1hdGlv
blBsYXlTdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRBbmltYXRpb25QbGF5U3RhdGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEFuaW1hdGlvblBsYXlT
dGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0
aW9uVGltaW5nRnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRBbmltYXRpb25UaW1pbmdG
dW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5jZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5jZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRBcHBlYXJhbmNl
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QXBwZWFyYW5jZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEFwcGVhcmFuY2VTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRBcHBlYXJhbmNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEFwcGVhcmFuY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QXBwZWFyYW5jZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QXBwZWFyYW5j
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJhY2tkcm9wRmlsdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZHJvcEZpbHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2Ryb3BGaWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2Ryb3BGaWx0ZXJHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRCYWNrZHJvcEZpbHRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tkcm9wRmlsdGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
QmFja2Ryb3BGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2Ryb3BGaWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2Ryb3BGaWx0ZXJTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJhY2tk
cm9wRmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZmFjZVZp
c2liaWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCYWNrZmFjZVZpc2liaWxpdHkiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZmFj
ZVZpc2liaWxpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHksIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2ZhY2VWaXNp
YmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QmFja2dyb3VuZENsaXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDbGlwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IndlYmtpdEJhY2tncm91bmRDbGlwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZENsaXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ2xpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZ3JvdW5kQ2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ2xpcFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0QmFja2dy
b3VuZENsaXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91
bmRDb21wb3NpdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dy
b3VuZENvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCYWNrZ3JvdW5k
Q29tcG9zaXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0QmFja2dyb3VuZE9yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZE9yaWdpbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCYWNrZ3JvdW5kT3JpZ2lu
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAid2Via2l0QmFja2dyb3VuZE9yaWdpbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRPcmlnaW5T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRPcmlnaW4sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QmFja2dyb3VuZE9yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAid2Via2l0QmFja2dyb3VuZE9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJhY2tncm91bmRTaXplR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
QmFja2dyb3VuZFNpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0QmFja2dyb3VuZFNpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCYWNrZ3JvdW5kU2l6
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJhY2tncm91bmRTaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0QmFja2dyb3VuZFNp
emUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0QmFja2dyb3VuZFNpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJhY2tncm91bmRTaXplIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJBZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckFmdGVyIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0
ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRl
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0Qm9yZGVyQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlckNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlckNvbG9yLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVy
Q29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJBZnRlckNvbG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJD
b2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJBZnRlckNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJBZnRlckNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRTdHlsZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRCb3JkZXJBZnRlclN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVy
QWZ0ZXJTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlckFmdGVyU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFN0
eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlckFmdGVyU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVyQWZ0ZXJT
dHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlckFmdGVyV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckJsb2NrRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVyV2lkdGgsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIndlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlcldpZHRoU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJBZnRlcldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckFmdGVy
V2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdEJvcmRlckFmdGVyV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJCZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJv
cmRlckJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlckJlZm9yZUNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZUNvbG9yLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZUNv
bG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVD
b2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVDb2xvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJCZWZvcmVDb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVT
dHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFy
dFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCZWZvcmVTdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJCbG9ja1N0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlU3R5bGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdEJvcmRlckJlZm9yZVN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3JlV2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQmVmb3Jl
V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9y
ZGVyQmVmb3JlV2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlckJlZm9yZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydFdpZHRoLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9y
ZVdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlckJlZm9yZVdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlckJvdHRvbUxlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyQm90dG9tTGVm
dFJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXNTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1c0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1c1NldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJFbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm9yZGVyRW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyRW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRl
ckVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEJvcmRlckVuZENvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3JHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJ3ZWJraXRCb3JkZXJFbmRDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZENvbG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVySW5saW5lRW5kQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kQ29sb3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJv
cmRlckVuZENvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm9yZGVyRW5kU3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckVuZFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRW5kU3R5bGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRTdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0Qm9yZGVyRW5kU3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZFdpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZFdp
ZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyRW5kV2lkdGgiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJFbmRXaWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckVuZFdpZHRoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckVuZFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRCb3JkZXJFbmRXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckZpdEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJGaXQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRml0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAid2Via2l0Qm9yZGVyRml0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyRml0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlckZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJGaXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlckZpdCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZyIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
ckhvcml6b250YWxTcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmdT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlckltYWdlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVySW1hZ2VTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJJbWFnZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJJbWFnZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVy
SW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3JkZXJSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyUmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclJhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdEJvcmRlclJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEJvcmRlclJhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJh
ZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJSYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyUmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJSYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJT
dGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3Rh
cnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJvcmRlclN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEJvcmRlclN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyU3RhcnQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJTdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJTdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0Q29sb3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0Q29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRl
clN0YXJ0Q29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm9yZGVyU3RhcnRDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlclN0YXJ0Q29s
b3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJTdGFydENvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRDb2xvciwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJT
dGFydENvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0Q29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlclN0YXJ0Q29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRC
b3JkZXJTdGFydFN0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVTdGFydFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFydFN0eWxlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0YXJ0U3R5bGVHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJ3ZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlcklubGluZVN0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJTdGFy
dFN0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJ3ZWJraXRCb3JkZXJTdGFydFN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRXaWR0aEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRXaWR0aCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVy
U3RhcnRXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3JkZXJTdGFydFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyU3RhcnRXaWR0
aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclN0YXJ0V2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFdpZHRoLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclN0
YXJ0V2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyU3RhcnRXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm9yZGVyU3RhcnRXaWR0aCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlclRvcExlZnRSYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlclRvcExlZnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVG9wTGVmdFJhZGl1c0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIndlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BMZWZ0UmFkaXVz
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BMZWZ0UmFkaXVzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJvcmRlclRvcExlZnRSYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlclRvcExlZnRSYWRpdXMiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdo
dFJhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1c1NldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclRvcFJpZ2h0UmFkaXVzLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
cmRlclRvcFJpZ2h0UmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3JkZXJUb3BSaWdodFJhZGl1cyIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
VmVydGljYWxTcGFjaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm9yZGVyVmVydGljYWxT
cGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveEFsaWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94QWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94QWxpZ25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hBbGlnbiIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
eEFsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ24sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94QWxpZ25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdEJveEFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveERlY29yYXRpb25CcmVh
aywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hEZWNv
cmF0aW9uQnJlYWtHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hEZWNvcmF0aW9uQnJlYWsiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hE
ZWNvcmF0aW9uQnJlYWtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEZWNvcmF0aW9uQnJlYWssIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RGVjb3Jh
dGlvbkJyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveERlY29yYXRpb25CcmVha1NldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94RGVjb3JhdGlvbkJy
ZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Qm94RGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hEaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveERpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hEaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJr
aXRCb3hEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRCb3hEaXJlY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rp
b24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
RGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveERpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94RGlyZWN0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hG
bGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm94RmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRCb3hGbGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveEZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94RmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94RmxleCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhHcm91cEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3hGbGV4R3JvdXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Qm94RmxleEdyb3VwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm94RmxleEdyb3VwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
RmxleEdyb3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveEZsZXhHcm91cCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRCb3hGbGV4R3JvdXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIndlYmtpdEJveEZsZXhHcm91cCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveExpbmVzR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94TGluZXMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94TGluZXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJ3ZWJraXRCb3hMaW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveExpbmVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94TGlu
ZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
TGluZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0Qm94TGluZXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEJveExpbmVzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JkaW5hbEdyb3VwR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXApKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dEJveE9yZGluYWxHcm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hPcmRpbmFsR3JvdXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hPcmRpbmFs
R3JvdXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3hPcmRpbmFsR3JvdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXAs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3Jk
aW5hbEdyb3VwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yZGluYWxHcm91cFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Qm94T3JkaW5hbEdyb3VwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94
T3JpZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmll
bnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveE9yaWVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hPcmllbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRCb3hPcmllbnQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hPcmll
bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94T3JpZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveE9yaWVudFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0Qm94T3JpZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Qm94UGFja0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0Qm94UGFjaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Qm94UGFjaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRCb3hQYWNrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Qm94UGFjayIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJv
eFBhY2tTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFBhY2ssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UGFja1NldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
Qm94UGFjayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveFJlZmxlY3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdEJveFJlZmxlY3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEJveFJlZmxlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94UmVmbGVjdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJv
eFJlZmxlY3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hSZWZsZWN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hSZWZsZWN0LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEJveFJlZmxlY3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIndlYmtpdEJveFJlZmxlY3QiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hTaGFkb3dHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2hhZG93LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNoYWRvd0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIndlYmtpdEJveFNoYWRvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNoYWRvd1NldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dEJveFNoYWRvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRCb3hTaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2hhZG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3hTaGFkb3ciKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRCb3hTaXppbmdH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJveFNpemluZykpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2l6
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNp
emluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEJveFNpemluZyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEJveFNpemluZ1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJveFNpemluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRCb3hTaXppbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Qm94U2l6aW5nU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRCb3hTaXppbmciKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0
aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2xpcFBhdGgpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENsaXBQ
YXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENsaXBQ
YXRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q2xpcFBhdGgiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDbGlwUGF0aFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUNsaXBQYXRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdENsaXBQYXRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdENsaXBQYXRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDbGlwUGF0aCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4aXNHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkF4aXMpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkF4aXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Q29sdW1uQXhpc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdENvbHVtbkF4aXMiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5BeGlzU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5BeGlzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkF4aXNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dENvbHVtbkF4aXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5CcmVha0FmdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0FmdGVyLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrQWZ0
ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRDb2x1bW5CcmVha0FmdGVyIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRl
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtBZnRlciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRDb2x1bW5CcmVha0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDb2x1bW5CcmVha0FmdGVyIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtCZWZvcmVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVm
b3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtp
dENvbHVtbkJyZWFrQmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQnJlYWtCZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5CcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0JlZm9yZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0Q29sdW1uQnJlYWtCZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5CcmVha0luc2lkZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFr
SW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkJyZWFrSW5zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uQnJlYWtJbnNpZGUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRD
b2x1bW5CcmVha0luc2lkZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJy
ZWFrSW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkJyZWFrSW5zaWRlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDb2x1bW5CcmVha0luc2lk
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtbkNvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5D
b3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uQ291bnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uQ291bnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRDb2x1bW5Db3Vu
dCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtbkNvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uQ291bnQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uQ291bnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29s
dW1uQ291bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIndlYmtpdENvbHVtbkNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uRmlsbEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sdW1uRmlsbCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uRmlsbCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5GaWxsR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAid2Via2l0Q29sdW1uRmlsbCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkZpbGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5GaWxsLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkZp
bGwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uRmlsbFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Q29sdW1uRmlsbCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbkdhcEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5HYXAsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uR2FwR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uR2FwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uR2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1u
R2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENv
bHVtbkdhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5HYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtbkdhcCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9u
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Qcm9ncmVz
c2lvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJr
aXRDb2x1bW5Qcm9ncmVzc2lvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblByb2dyZXNzaW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUHJvZ3Jlc3Npb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUHJvZ3Jlc3Npb25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdENvbHVtblByb2dyZXNzaW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q29sdW1uUnVsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uUnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5SdWxlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
d2Via2l0Q29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUnVsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Q29sdW1uUnVsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVDb2xvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5S
dWxlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Q29sdW1uUnVsZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uUnVsZUNvbG9yIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29s
dW1uUnVsZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVDb2xvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5SdWxlQ29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtblJ1bGVDb2xvciIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRD
b2x1bW5SdWxlU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Q29sdW1uUnVsZVN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1uUnVsZVN0
eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Q29sdW1uUnVsZVN0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVTdHls
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5SdWxlU3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtblJ1bGVTdHlsZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1bGVX
aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRo
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDb2x1bW5SdWxlV2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Q29sdW1uUnVsZVdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29sdW1u
UnVsZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0Q29sdW1uUnVsZVdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVdpZHRoLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblJ1
bGVXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5SdWxlV2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENvbHVtblJ1bGVXaWR0aCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVt
blNwYW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNwYW4pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dENvbHVtblNwYW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0Q29sdW1uU3BhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdENvbHVtblNwYW4iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5TcGFu
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5TcGFuLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtblNwYW5TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdENv
bHVtblNwYW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5XaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdENvbHVtbldpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbldpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0Q29s
dW1uV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRDb2x1bW5XaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbldpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdENvbHVtbldpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ3ZWJraXRDb2x1bW5XaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbnNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVtbnMsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q29sdW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRDb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1ucywgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDb2x1bW5zLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdENvbHVt
bnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IndlYmtpdENvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRDdXJzb3JWaXNpYmlsaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNpYmlsaXR5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRDdXJzb3JWaXNpYmlsaXR5LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEN1cnNvclZpc2li
aWxpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRDdXJzb3JWaXNpYmlsaXR5Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJp
bGl0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEN1cnNvclZpc2liaWxpdHksIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Q3Vyc29yVmlzaWJpbGl0eSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRDdXJzb3JWaXNpYmlsaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRDdXJzb3JWaXNpYmlsaXR5Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmlsdGVyR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWx0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZpbHRlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGaWx0ZXJHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJ3ZWJraXRGaWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRGaWx0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWx0ZXIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmlsdGVyLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZp
bHRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAid2Via2l0RmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
RmxleCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0RmxleCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRGbGV4R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0RmxleCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlG
bGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZs
ZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0RmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAid2Via2l0RmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhCYXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5RmxleEJhc2lzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4QmFzaXMsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleEJhc2lzR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
d2Via2l0RmxleEJhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleEJhc2lzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhCYXNpcywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRGbGV4QmFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIndlYmtpdEZsZXhCYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleERpcmVjdGlv
bkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEZsZXhEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGbGV4RGlyZWN0aW9uU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5RmxleERpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRGbGV4RGlyZWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhEaXJlY3Rpb25TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dEZsZXhEaXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRGbGV4Rmxvd0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5RmxleEZsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0RmxleEZsb3ci
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRG
bGV4Rmxvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhGbG93LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhGbG93U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRG
bGV4RmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEZsZXhHcm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4
R3JvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0RmxleEdyb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRGbGV4R3JvdyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhHcm93
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0RmxleEdyb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleEdyb3dTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEZsZXhHcm93
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
RmxleFNocmlua0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleFNocmlu
aykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0RmxleFNocmluaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRGbGV4U2hyaW5rR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0RmxleFNocmluayIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhT
aHJpbmtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZsZXhTaHJpbmssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFNocmlua1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0RmxleFNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdEZsZXhXcmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleFdyYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0RmxleFdyYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRGbGV4V3JhcCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEZs
ZXhXcmFwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmxleFdyYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFdyYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0RmxleFdyYXBTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEZs
ZXhXcmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0Rm9udEtlcm5pbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRLZXJuaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2VybmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2VybmluZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtp
dEZvbnRLZXJuaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0Rm9udEtlcm5pbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250S2Vy
bmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRGb250S2VybmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0Rm9udEtlcm5pbmciKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRGb250U21vb3RoaW5nR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRGb250U21vb3RoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdEZvbnRTbW9vdGhpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRGb250U21vb3RoaW5n
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
Rm9udFNtb290aGluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0Rm9udFNtb290aGluZywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRGb250U21vb3RoaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRGb250U21vb3RoaW5nIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVy
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFy
YWN0ZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXJHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUNo
YXJhY3RlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRBZnRlckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0SHlwaGVuYXRlTGltaXRBZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0
SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRIeXBoZW5hdGVMaW1pdEFmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QWZ0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGlt
aXRBZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9y
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
ZWJraXRIeXBoZW5hdGVMaW1pdEJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlw
aGVuYXRlTGltaXRCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIndlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRM
aW5lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRl
TGltaXRMaW5lcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXNTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
SHlwaGVuYXRlTGltaXRMaW5lc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SHlwaGVuc0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIndlYmtpdEh5cGhlbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRIeXBoZW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
SHlwaGVucywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRIeXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdEh5cGhlbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdEh5cGhlbnMiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRJbml0aWFsTGV0dGVyR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRJbml0aWFsTGV0dGVyKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRJ
bml0aWFsTGV0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdEluaXRpYWxMZXR0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRJbml0aWFsTGV0dGVyIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SW5p
dGlhbExldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEluaXRpYWxMZXR0ZXIsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SW5pdGlhbExldHRlciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRJbml0aWFsTGV0dGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRJbml0aWFsTGV0dGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUNvbnRlbnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5
Q29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRK
dXN0aWZ5Q29udGVudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEp1c3RpZnlDb250ZW50Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlm
eUNvbnRlbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5Q29udGVudCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5Q29udGVudCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRK
dXN0aWZ5Q29udGVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAid2Via2l0SnVzdGlmeUNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRKdXN0aWZ5SXRlbXNHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtcykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUl0ZW1zLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlJdGVt
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdEp1c3RpZnlJdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdEp1c3RpZnlJdGVtc1NldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUp1c3RpZnlJdGVtcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRKdXN0aWZ5SXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0SnVzdGlmeUl0ZW1zU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRKdXN0
aWZ5SXRlbXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRMaW5lQWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdExpbmVBbGlnbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0TGluZUFsaWduLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdExpbmVBbGlnbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExpbmVB
bGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdExpbmVBbGlnblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbiwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQWxpZ24sIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZUFsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRMaW5lQWxpZ24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFpbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJveENvbnRhaW4pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCb3hDb250YWlu
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCb3hD
b250YWluR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TGluZUJveENvbnRhaW4iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQm94Q29udGFp
blNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCb3hDb250YWluLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExp
bmVCb3hDb250YWluU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3ZWJraXRMaW5lQm94Q29udGFpbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCcmVha0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQnJlYWssIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0TGluZUJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUJyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVCcmVh
aywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRMaW5lQnJlYWtTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdExpbmVCcmVhayIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVDbGFtcEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQ2xhbXAsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUNsYW1wR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0TGluZUNsYW1wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUNsYW1wU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0TGluZUNsYW1wLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdExpbmVDbGFtcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lQ2xhbXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdExpbmVDbGFtcCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVHcmlk
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lR3JpZCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZUdyaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TGluZUdyaWRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRMaW5lR3JpZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExpbmVHcmlkU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0TGluZUdyaWQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0TGluZUdyaWQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZUdyaWRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdExpbmVHcmlkIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGlu
ZVNuYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFw
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMaW5lU25hcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRMaW5lU25hcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExpbmVTbmFwIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TGluZVNuYXBTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRMaW5lU25hcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMaW5lU25hcFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TGluZVNu
YXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRMb2NhbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExvY2Fs
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TG9jYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdExvY2FsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExvY2FsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvY2FsZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdExvY2FsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRMb2NhbGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9jYWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRMb2NhbGUiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMb2dpY2FsSGVpZ2h0
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCbG9ja1NpemUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2lj
YWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdExvZ2ljYWxIZWlnaHQiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRMb2dpY2Fs
SGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5QmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxIZWlnaHQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbEhl
aWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAid2Via2l0TG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIndlYmtpdExvZ2ljYWxXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlubGlu
ZVNpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdExvZ2ljYWxXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TG9naWNhbFdpZHRoIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2lu
QWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbkJsb2NrRW5k
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXJnaW5BZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXJnaW5BZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hcmdpbkFmdGVyIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFy
Z2luQWZ0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5BZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAid2Via2l0TWFyZ2luQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5BZnRlckNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0TWFyZ2luQmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWFyZ2luQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXJnaW5CZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQmVmb3JlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXJn
aW5CZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZUNvbGxh
cHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXJnaW5CZWZvcmVDb2xsYXBzZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNv
bGxhcHNlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hcmdpbkJlZm9yZUNvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2lu
Qm90dG9tQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXJnaW5C
b3R0b21Db2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQm90dG9tQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQm90dG9tQ29s
bGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luQ29sbGFwc2VHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5D
b2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRN
YXJnaW5Db2xsYXBzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hcmdpbkNvbGxhcHNlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2lu
Q29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5Db2xsYXBzZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXJnaW5Db2xsYXBzZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFyZ2luQ29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJnaW5FbmRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZUVuZCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luRW5k
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkVu
ZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hcmdpbkVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpbkVuZFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eU1hcmdpbklubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXJnaW5FbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luRW5kU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXJnaW5FbmQiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXJn
aW5TdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luSW5saW5l
U3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1hcmdpblN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFyZ2luU3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXJnaW5TdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblN0YXJ0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hcmdpblN0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ3ZWJraXRNYXJnaW5TdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hcmdpblRvcENvbGxhcHNlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFyZ2luVG9wQ29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXJnaW5U
b3BDb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1hcmdpblRvcENvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9w
Q29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFyZ2luVG9wQ29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFyZ2luVG9wQ29sbGFwc2VTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hcmdp
blRvcENvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0TWFzaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFzaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRNYXNrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFzayIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1hc2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFzayIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94
SW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFz
a0JveEltYWdlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza0JveEltYWdlIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94
SW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdE1hc2tCb3hJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZU91dHNldEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0KSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94
SW1hZ2VPdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFza0JveEltYWdlT3V0c2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza0JveEltYWdl
T3V0c2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza0JveEltYWdlT3V0c2V0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
T3V0c2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1hc2tCb3hJbWFnZU91dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VPdXRzZXRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tC
b3hJbWFnZU91dHNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VSZXBl
YXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0Jv
eEltYWdlUmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza0JveEltYWdlUmVwZWF0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFz
a0JveEltYWdlUmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0LCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJ
bWFnZVJlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VSZXBlYXRTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tCb3hJbWFnZVJl
cGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tCb3hJbWFnZVNsaWNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU2xpY2UsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU2xpY2VH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXNrQm94SW1hZ2VTbGljZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVNsaWNl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU2xpY2UsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU2xpY2UsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWFza0JveEltYWdlU2xpY2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tCb3hJbWFnZVNsaWNlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291
cmNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1h
Z2VTb3VyY2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VTb3VyY2VHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VTb3VyY2VTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlU291cmNlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tCb3hJ
bWFnZVNvdXJjZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAid2Via2l0TWFza0JveEltYWdlU291cmNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0JveEltYWdlV2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVdpZHRoKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tC
b3hJbWFnZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza0JveEltYWdlV2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQm94SW1hZ2VXaWR0aFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFz
a0JveEltYWdlV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrQ2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0TWFza0NsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFz
a0NsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRNYXNrQ2xpcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDbGlwLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tDbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJ3ZWJraXRNYXNrQ2xpcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0NvbXBvc2l0ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tDb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ29tcG9zaXRlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrQ29tcG9zaXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tDb21wb3NpdGVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndl
YmtpdE1hc2tDb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRNYXNrSW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza0ltYWdlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tJbWFnZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdE1hc2tJbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdE1hc2tJbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrSW1hZ2Us
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza0ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXNrSW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrT3JpZ2luR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrT3JpZ2luLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tPcmlnaW5H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXNrT3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza09yaWdpblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza09yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrT3JpZ2luU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRNYXNrT3JpZ2lu
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFza1Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRN
YXNrUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXNrUG9zaXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bv
c2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFza1Bvc2l0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1Bvc2l0aW9u
WEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0TWFza1Bvc2l0aW9uWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRNYXNrUG9zaXRpb25YR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza1Bvc2l0
aW9uWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tQb3NpdGlvblhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlv
blgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0TWFza1Bvc2l0aW9uWFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWFza1Bvc2l0aW9uWCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tQb3NpdGlvbllH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1hc2tQb3NpdGlvblksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza1Bvc2l0aW9uWUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tQb3NpdGlv
blkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRNYXNrUG9zaXRpb25ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUG9zaXRpb25Z
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdE1hc2tQb3NpdGlvbllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdE1hc2tQb3NpdGlvblkiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUmVwZWF0R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNr
UmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1h
c2tSZXBlYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRNYXNrUmVwZWF0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1JlcGVhdFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0TWFza1JlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrUmVwZWF0U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRN
YXNrUmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0TWFza1NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1hc2tTaXpl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
TWFza1NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6ZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrU2l6
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0TWFza1NpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRNYXNrU291cmNlVHlwZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5cGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAid2Via2l0TWFza1NvdXJjZVR5cGUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXNrU291cmNlVHlwZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tTb3VyY2VUeXBlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VUeXBlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1hc2tTb3VyY2VU
eXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJ3ZWJraXRNYXNrU291cmNlVHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWlnaHRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1heEJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbEhlaWdodCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsSGVp
Z2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWF4TG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1heExvZ2ljYWxIZWln
aHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlNYXhCbG9ja1NpemUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbEhlaWdodCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dp
Y2FsSGVpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRNYXhMb2dpY2FsSGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNhbFdpZHRoR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhJbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsV2lk
dGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9n
aWNhbFdpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0TWF4TG9naWNhbFdpZHRoIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4TG9naWNh
bFdpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNYXhMb2dpY2FsV2lkdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWF4
TG9naWNhbFdpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3ZWJraXRNYXhMb2dpY2FsV2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNaW5Mb2dpY2FsSGVpZ2h0R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNaW5CbG9ja1NpemUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxI
ZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWlu
TG9naWNhbEhlaWdodEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1pbkxvZ2ljYWxIZWlnaHQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRNaW5M
b2dpY2FsSGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluQmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxIZWlnaHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0TWluTG9naWNhbEhlaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWluTG9naWNhbEhlaWdodCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE1pbkxvZ2ljYWxXaWR0aEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWluSW5saW5lU2l6ZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWlu
TG9naWNhbFdpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdE1pbkxvZ2ljYWxXaWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE1pbkxvZ2ljYWxXaWR0
aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dE1pbkxvZ2ljYWxXaWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbklubGluZVNpemUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TWluTG9naWNhbFdpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdE1pbkxvZ2ljYWxXaWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TWluTG9naWNhbFdpZHRoIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TmJzcE1vZGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9k
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9k
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE5ic3BNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0TmJzcE1vZGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXROYnNwTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXROYnNwTW9kZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0TmJzcE1vZGUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcGFjaXR5R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPcGFjaXR5KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcGFjaXR5LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdE9wYWNpdHlHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRPcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3BhY2l0eVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU9wYWNpdHks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3BhY2l0
eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRPcGFjaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRPcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0T3JkZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eU9yZGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdE9yZGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
T3JkZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlPcmRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRPcmRlclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0T3JkZXIiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5n
QWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0Vu
ZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGFkZGluZ0FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdBZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFBhZGRpbmdBZnRl
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFBhZGRpbmdBZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQWZ0ZXIsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0UGFkZGluZ0FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ3ZWJraXRQYWRkaW5nQWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQmVmb3JlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0Jl
Zm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRk
aW5nQmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UGFkZGluZ0JlZm9yZSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdCZWZv
cmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nQmVmb3JlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRp
bmdCZWZvcmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIndlYmtpdFBhZGRpbmdCZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nRW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nRW5kLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBhZGRpbmdFbmRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJ3ZWJraXRQYWRkaW5nRW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ0VuZFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRp
bmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGFkZGluZ0VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQYWRkaW5nRW5kU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRQYWRkaW5nRW5kIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGlu
Z1N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5l
U3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdTdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRQYWRkaW5nU3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRQYWRkaW5n
U3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQYWRkaW5nU3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lU3RhcnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGFkZGluZ1N0YXJ0
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBhZGRpbmdTdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0UGFkZGluZ1N0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVj
dGl2ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFBlcnNwZWN0aXZlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlQZXJzcGVjdGl2ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0UGVyc3Bl
Y3RpdmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGVyc3BlY3RpdmVPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0
aXZlT3JpZ2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ3ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5YKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UGVyc3BlY3Rp
dmVPcmlnaW5YIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmln
aW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBl
cnNwZWN0aXZlT3JpZ2luWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblhTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFBlcnNwZWN0
aXZlT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblksIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVPcmln
aW5ZR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5ZU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFByaW50Q29sb3JB
ZGp1c3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFByaW50Q29s
b3JBZGp1c3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFByaW50Q29sb3JBZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0UHJpbnRDb2xvckFkanVzdEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRQcmludENvbG9yQWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
UHJpbnRDb2xvckFkanVzdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRQcmludENvbG9yQWRqdXN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFByaW50Q29sb3JBZGp1c3RTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dFByaW50Q29sb3JBZGp1c3QiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRSdGxPcmRlcmluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0UnRsT3JkZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRSdGxPcmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFJ0
bE9yZGVyaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFJ0bE9yZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ0bE9yZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRSdGxPcmRlcmluZyIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ1YnlQ
b3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UnVieVBv
c2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRSdWJ5UG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0UnVieVBvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0UnVieVBv
c2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0UnVieVBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFJ1YnlQb3NpdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRSdWJ5UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFJ1YnlQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hv
bGRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlSW1hZ2VUaHJlc2hv
bGQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndl
YmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZUltYWdlVGhyZXNob2xkU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2hhcGVJbWFnZVRocmVzaG9sZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRTaGFwZUltYWdlVGhyZXNob2xkLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlSW1hZ2VUaHJl
c2hvbGRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZU1hcmdpbkdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0U2hhcGVNYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRTaGFwZU1hcmdpblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNo
YXBlTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFNoYXBlTWFyZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlTWFyZ2luU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRTaGFwZU1hcmdpbiIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBl
T3V0c2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRl
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRTaGFwZU91dHNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0U2hhcGVPdXRzaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0U2hhcGVPdXRzaWRl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
U2hhcGVPdXRzaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFNoYXBlT3V0c2lkZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRT
aGFwZU91dHNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIndlYmtpdFNoYXBlT3V0c2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRDb21iaW5lR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0Q29tYmluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRDb21iaW5lU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dENvbWJpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dENvbWJpbmVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRD
b21iaW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dERlY29yYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIndlYmtpdFRleHREZWNvcmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
VGV4dERlY29yYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNv
cmF0aW9uQ29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4
dERlY29yYXRpb25Db2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3IsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRp
b25Db2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkNvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRUZXh0RGVjb3JhdGlvbkNv
bG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VGV4dERlY29yYXRpb25MaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbkxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uTGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvbkxpbmVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25MaW5lLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRl
eHREZWNvcmF0aW9uTGluZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dERlY29yYXRpb25MaW5lIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25Ta2lw
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHREZWNvcmF0aW9uU2tpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblNraXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRU
ZXh0RGVjb3JhdGlvblNraXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RGVjb3JhdGlvblNraXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVj
b3JhdGlvblNraXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dERlY29yYXRpb25Ta2lwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uU2tpcFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
VGV4dERlY29yYXRpb25Ta2lwIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TdHlsZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25T
dHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
RGVjb3JhdGlvblN0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4dERlY29yYXRpb25TdHls
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRleHREZWNvcmF0aW9uU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHREZWNv
cmF0aW9uU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25TdHlsZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dERlY29yYXRp
b25TdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3RHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhh
c2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRUZXh0RW1waGFzaXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RW1waGFz
aXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRUZXh0RW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dEVtcGhhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzQ29sb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9y
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFRl
eHRFbXBoYXNpc0NvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNDb2xvclNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0
VGV4dEVtcGhhc2lzQ29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRFbXBo
YXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4dEVtcGhh
c2lzUG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRFbXBoYXNpc1Bvc2l0
aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJ3ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRFbXBoYXNpc1N0eWxlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4
dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VGV4dEVtcGhhc2lzU3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0RW1waGFz
aXNTdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRFbXBoYXNpc1N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dEVtcGhhc2lzU3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEVtcGhhc2lzU3R5bGVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRFbXBo
YXNpc1N0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VGV4dEZpbGxDb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEZpbGxDb2xvciwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0RmlsbENvbG9yR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0VGV4dEZpbGxDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRGaWxsQ29sb3JTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RmlsbENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRleHRGaWxsQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dEZpbGxDb2xvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dEZp
bGxDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRPcmllbnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dE9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0T3JpZW50YXRpb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dE9yaWVudGF0aW9uR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0VGV4dE9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dE9yaWVudGF0aW9uU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRPcmllbnRhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0T3JpZW50
YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdFRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTZWN1cml0eUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5KSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2VjdXJpdHksIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNlY3VyaXR5
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4dFNlY3VyaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNlY3VyaXR5U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTZWN1cml0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U2VjdXJpdHlTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtp
dFRleHRTZWN1cml0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHRTaXplQWRqdXN0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1c3QsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1c3RHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRUZXh0U2l6ZUFkanVzdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTaXplQWRqdXN0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFNpemVBZGp1
c3RTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IndlYmtpdFRleHRTaXplQWRqdXN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAid2Via2l0VGV4dFN0cm9rZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRleHRTdHJva2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VGV4dFN0cm9rZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VD
b2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRUZXh0U3Ryb2tlQ29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0
VGV4dFN0cm9rZUNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZUNvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRleHRTdHJva2VDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlQ29sb3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRTdHJv
a2VDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRleHRTdHJva2VXaWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tlV2lkdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVdpZHRoR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAid2Via2l0VGV4dFN0cm9rZVdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFN0cm9rZVdpZHRoU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRTdHJva2VXaWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0U3Ryb2tl
V2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIndlYmtpdFRleHRTdHJva2VXaWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbkdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0
VW5kZXJsaW5lUG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VGV4
dFVuZGVybGluZVBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUZXh0VW5kZXJsaW5l
UG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIndlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRab29tR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Wm9vbSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFpvb20sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VGV4dFpvb21HZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJ3ZWJraXRUZXh0Wm9vbSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRleHRab29tU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4
dFpvb20sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VGV4dFpvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fd2Via2l0VGV4dFpvb21TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndlYmtpdFRleHRab29tIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm0iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm0sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
VHJhbnNmb3JtLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3JtIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2lu
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zZm9ybU9yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm1P
cmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93
ZWJraXRUcmFuc2Zvcm1PcmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4sIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3Jp
Z2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3JtT3JpZ2luIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3Jt
T3JpZ2luWEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtT3Jp
Z2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5YR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0
VHJhbnNmb3JtT3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1P
cmlnaW5YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zZm9ybU9yaWdpblgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3Jt
T3JpZ2luWCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3dlYmtpdFRyYW5zZm9ybU9yaWdpbllHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVRyYW5zZm9ybU9yaWdpblkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdpblksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIndlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5ZU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtT3JpZ2luWSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9ybU9yaWdp
bllTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IndlYmtpdFRyYW5zZm9ybU9yaWdpblkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5aR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1PcmlnaW5a
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zZm9y
bU9yaWdpblpHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm1PcmlnaW5aIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3Jt
T3JpZ2luWlNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblosIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRUcmFuc2Zvcm1PcmlnaW5aIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNmb3JtU3R5bGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJr
aXRUcmFuc2Zvcm1TdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl93ZWJraXRUcmFuc2Zvcm1TdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFRyYW5zZm9ybVN0
eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNmb3JtU3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1T
dHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRUcmFuc2Zvcm1TdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNmb3JtU3R5bGUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9u
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFu
c2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRy
YW5zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2l0aW9uIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVRyYW5zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRUcmFuc2l0
aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Vi
a2l0VHJhbnNpdGlvbkRlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRGVsYXlHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRUcmFuc2l0aW9uRGVsYXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRGVsYXlTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2l0aW9uRGVsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VHJhbnNpdGlvbkRlbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EZWxheVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNp
dGlvbkRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRHVyYXRp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uRHVy
YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFRyYW5zaXRpb25EdXJhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblBy
b3BlcnR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJv
cGVydHkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uUHJvcGVydHlHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3
ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uUHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uUHJvcGVydHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0
eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
d2Via2l0VHJhbnNpdGlvblByb3BlcnR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtp
dFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ3ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb25T
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
d2Via2l0VXNlckRyYWdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJEcmFnKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRVc2VyRHJhZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl93ZWJraXRVc2VyRHJhZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndlYmtpdFVzZXJEcmFnIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNl
ckRyYWdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyRHJhZywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyRHJhZ1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Vi
a2l0VXNlckRyYWciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRVc2VyTW9kaWZ5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRVc2VyTW9kaWZ5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyTW9kaWZ5LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJNb2RpZnlHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJr
aXRVc2VyTW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0VXNlck1vZGlmeVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlck1vZGlm
eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93ZWJraXRVc2VyTW9kaWZ5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ3ZWJraXRVc2VyTW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVjdEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVj
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93ZWJraXRVc2VyU2Vs
ZWN0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAid2Via2l0VXNlclNlbGVjdCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3RTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRVc2VyU2VsZWN0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3dlYmtpdFVzZXJTZWxlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0VXNlclNlbGVjdFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2Via2l0VXNlclNl
bGVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFdyaXRpbmdNb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0
aW5nTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fd2Via2l0V3JpdGluZ01vZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fd2Via2l0V3JpdGluZ01vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3ZWJraXRXcml0aW5n
TW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dl
YmtpdFdyaXRpbmdNb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0V3JpdGluZ01vZGUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2Via2l0
V3JpdGluZ01vZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIndlYmtpdFdyaXRpbmdNb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9yX2Rhc2hfZmlsdGVyR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBcHBsZUNvbG9yRmlsdGVyKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2Fw
cGxlX2Rhc2hfY29sb3JfZGFzaF9maWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9yX2Rhc2hfZmlsdGVyR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLWFwcGxlLWNvbG9yLWZpbHRlciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9jb2xvcl9kYXNoX2ZpbHRlclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUFwcGxlQ29sb3JGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX2NvbG9yX2Rhc2hfZmlsdGVyLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
YXBwbGVfZGFzaF9jb2xvcl9kYXNoX2ZpbHRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWFwcGxlLWNvbG9yLWZpbHRlciIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9w
YXlfZGFzaF9idXR0b25fZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9k
YXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
YXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi1h
cHBsZS1wYXktYnV0dG9uLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3N0eWxl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2FwcGxlX2Rhc2hfcGF5X2Rhc2hfYnV0dG9uX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3BheV9kYXNoX2J1dHRvbl9kYXNoX3N0eWxlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItYXBw
bGUtcGF5LWJ1dHRvbi1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBcHBsZVBheUJ1dHRvblR5cGUpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
YXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFzaF9idXR0b25fZGFz
aF90eXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWFwcGxlLXBheS1idXR0b24tdHlwZSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9w
YXlfZGFzaF9idXR0b25fZGFzaF90eXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25UeXBl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVf
ZGFzaF9wYXlfZGFzaF9idXR0b25fZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF9wYXlfZGFz
aF9idXR0b25fZGFzaF90eXBlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItYXBwbGUtcGF5LWJ1dHRvbi10eXBlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5n
X2Rhc2hfd29yZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QXBwbGVUcmFp
bGluZ1dvcmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF90cmFpbGluZ19kYXNoX3dvcmQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hf
d29yZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi1hcHBsZS10cmFpbGluZy13b3JkIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWls
aW5nX2Rhc2hfd29yZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFwcGxlVHJhaWxpbmdXb3JkLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfYXBwbGVfZGFzaF90cmFpbGlu
Z19kYXNoX3dvcmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9hcHBsZV9kYXNoX3RyYWlsaW5nX2Rhc2hfd29yZFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWFwcGxlLXRy
YWlsaW5nLXdvcmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX2VwdWJfZGFzaF9jYXB0aW9uX2Rhc2hfc2lkZUdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2NhcHRpb25fZGFzaF9z
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX2NhcHRpb25fZGFzaF9zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWVwdWItY2FwdGlvbi1zaWRl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9l
cHViX2Rhc2hfY2FwdGlvbl9kYXNoX3NpZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF9j
YXB0aW9uX2Rhc2hfc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF9jYXB0aW9uX2Rhc2hfc2lkZVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWVwdWIt
Y2FwdGlvbi1zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVuc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0SHlwaGVucykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVucywgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF9oeXBoZW5zR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLWVwdWItaHlwaGVucyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX2h5cGhlbnNTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfZXB1Yl9kYXNoX2h5cGhlbnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfaHlwaGVuc1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWVwdWItaHlw
aGVucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2NvbWJp
bmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rh
c2hfdGV4dF9kYXNoX2NvbWJpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItZXB1Yi10ZXh0LWNvbWJpbmUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2Vw
dWJfZGFzaF90ZXh0X2Rhc2hfY29tYmluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5l
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX3RleHRfZGFzaF9jb21iaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9jb21iaW5l
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
ZXB1Yi10ZXh0LWNvbWJpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hf
dGV4dF9kYXNoX2VtcGhhc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi1l
cHViLXRleHQtZW1waGFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9k
YXNoX3RleHRfZGFzaF9lbXBoYXNpc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiLWVwdWItdGV4dC1lbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lz
X2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICItZXB1Yi10ZXh0LWVtcGhhc2lzLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rh
c2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rh
c2hfZW1waGFzaXNfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFz
aXNfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLWVwdWItdGV4dC1lbXBoYXNpcy1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9l
bXBoYXNpc19kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9l
cHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICIt
ZXB1Yi10ZXh0LWVtcGhhc2lzLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hf
c3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNf
ZGFzaF9zdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLWVwdWItdGV4dC1lbXBoYXNpcy1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3RleHRfZGFzaF9vcmll
bnRhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9y
aWVudGF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX29y
aWVudGF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWVwdWItdGV4dC1vcmllbnRhdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNo
X3RleHRfZGFzaF9vcmllbnRhdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlv
biwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJf
ZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX29y
aWVudGF0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItZXB1Yi10ZXh0LW9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfdGV4dF9kYXNoX3RyYW5zZm9y
bUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9l
cHViX2Rhc2hfdGV4dF9kYXNoX3RyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3JtR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLWVwdWItdGV4dC10cmFuc2Zvcm0iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3Jt
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF90ZXh0X2Rhc2hfdHJhbnNmb3JtLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfZXB1Yl9kYXNoX3RleHRfZGFzaF90cmFuc2Zvcm1TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi1lcHViLXRleHQtdHJhbnNmb3JtIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rh
c2hfd29yZF9kYXNoX2JyZWFrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
b3JkQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhaywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93b3JkX2Rhc2hfYnJlYWtHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICItZXB1Yi13b3JkLWJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfd29yZF9kYXNoX2JyZWFrU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V29yZEJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dvcmRfZGFzaF9icmVhaywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFz
aF93b3JkX2Rhc2hfYnJlYWtTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi1lcHViLXdvcmQtYnJlYWsiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93cml0aW5nX2Rhc2hfbW9k
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfZXB1
Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfZXB1Yl9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLWVwdWItd3JpdGluZy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF9lcHViX2Rhc2hfd3JpdGluZ19kYXNoX21vZGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXcml0aW5nTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX2VwdWJfZGFzaF93cml0aW5nX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2VwdWJfZGFzaF93
cml0aW5nX2Rhc2hfbW9kZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLWVwdWItd3JpdGluZy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF9pbnRlcm5hbF9kYXNoX3RleHRfZGFzaF9h
dXRvc2l6aW5nX2Rhc2hfc3RhdHVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlJbnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2ludGVybmFsX2Rhc2hfdGV4dF9kYXNo
X2F1dG9zaXppbmdfZGFzaF9zdGF0dXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF9pbnRlcm5hbF9kYXNoX3RleHRfZGFzaF9hdXRvc2l6aW5nX2Rhc2hfc3Rh
dHVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiLWludGVybmFsLXRleHQtYXV0b3NpemluZy1zdGF0dXMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX2ludGVy
bmFsX2Rhc2hfdGV4dF9kYXNoX2F1dG9zaXppbmdfZGFzaF9zdGF0dXNTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJ
bnRlcm5hbFRleHRBdXRvc2l6aW5nU3RhdHVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfaW50ZXJuYWxfZGFzaF90ZXh0X2Rhc2hfYXV0b3NpemluZ19k
YXNoX3N0YXR1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX2ludGVybmFsX2Rhc2hfdGV4dF9kYXNoX2F1dG9zaXppbmdfZGFz
aF9zdGF0dXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIi1pbnRlcm5hbC10ZXh0LWF1dG9zaXppbmctc3RhdHVzIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9k
YXNoX2NvbnRlbnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduQ29u
dGVudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2NvbnRlbnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2NvbnRl
bnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWFsaWduLWNvbnRlbnQiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWdu
X2Rhc2hfY29udGVudFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduQ29udGVudCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hf
Y29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfY29udGVudFNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hbGln
bi1jb250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX2l0ZW1zR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsaWduX2Rhc2hfaXRl
bXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9hbGlnbl9kYXNoX2l0ZW1zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbGlnbi1pdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9pdGVtc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduSXRlbXMsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hbGlnbl9kYXNoX2l0ZW1zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9pdGVtc1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1hbGlnbi1pdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFzaF9zZWxmR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnblNlbGYpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWxpZ25fZGFz
aF9zZWxmLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYWxpZ25fZGFzaF9zZWxmR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbGlnbi1z
ZWxmIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGZTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnblNlbGYsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hbGlnbl9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbGlnbl9kYXNoX3NlbGZTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtYWxpZ24tc2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlBbHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYWx0R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdl
YmtpdC1hbHQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2FsdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsdCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FsdCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2FsdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hbHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbkdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1h
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2FuaW1hdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9hbmltYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb24sIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb24sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmlt
YXRpb25fZGFzaF9kZWxheUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5p
bWF0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRp
b25fZGFzaF9kZWxheUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uLWRlbGF5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9hbmltYXRpb25fZGFzaF9kZWxheVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkRlbGF5
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9kZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24tZGVsYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNo
X2RpcmVjdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9u
RGlyZWN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2RpcmVjdGlvbiwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1h
dGlvbl9kYXNoX2RpcmVjdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uLWRp
cmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QW5pbWF0aW9uRGlyZWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWFuaW1hdGlvbi1kaXJl
Y3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EdXJhdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmlt
YXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNo
X2R1cmF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRHVyYXRpb24sIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25f
ZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9u
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfZmlsbF9k
YXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZp
bGxNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5p
bWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWFuaW1h
dGlvbi1maWxsLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5QW5pbWF0aW9uRmlsbE1vZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9maWxsX2Rh
c2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2Rl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2l0ZXJh
dGlvbl9kYXNoX2NvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25JdGVyYXRpb25Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9pdGVyYXRp
b25fZGFzaF9jb3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2NvdW50R2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9h
bmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlv
bkl0ZXJhdGlvbkNvdW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9u
YW1lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX25hbWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF9uYW1lR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24tbmFtZSIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9u
X2Rhc2hfbmFtZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFz
aF9uYW1lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfbmFtZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hbmlt
YXRpb24tbmFtZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25QbGF5U3RhdGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hf
cGxheV9kYXNoX3N0YXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1hbmltYXRpb24tcGxheS1z
dGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5QW5pbWF0aW9uUGxheVN0YXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWFuaW1hdGlvbi1wbGF5LXN0YXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFz
aF9mdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hf
ZnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYW5pbWF0
aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25UaW1p
bmdGdW5jdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2FuaW1hdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9hcHBlYXJhbmNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYXBwZWFy
YW5jZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2Us
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9hcHBlYXJhbmNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYXBwZWFyYW5jZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1hcHBl
YXJhbmNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFj
a2Ryb3BfZGFzaF9maWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Ii13ZWJraXQtYmFja2Ryb3AtZmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlclNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2Ryb3BfZGFzaF9maWx0
ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZHJvcF9kYXNoX2ZpbHRlclNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1iYWNrZHJv
cC1maWx0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tmYWNlX2Rhc2hfdmlzaWJpbGl0
eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
YmFja2ZhY2VfZGFzaF92aXNpYmlsaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNp
YmlsaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYmFja2ZhY2VfZGFzaF92aXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
YmFja2ZhY2VfZGFzaF92aXNpYmlsaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JhY2tncm91bmRfZGFzaF9jbGlwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hf
Y2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1iYWNr
Z3JvdW5kLWNsaXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlwU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZENsaXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfY2xpcCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9jbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJhY2tncm91bmQtY2xpcCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNr
Z3JvdW5kX2Rhc2hfY29tcG9zaXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIi13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91
bmRfZGFzaF9jb21wb3NpdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYmFja2dyb3VuZF9kYXNoX2NvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tn
cm91bmRfZGFzaF9jb21wb3NpdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYmFja2dyb3VuZC1jb21wb3NpdGUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JhY2tncm91bmRfZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9kYXNo
X29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0
LWJhY2tncm91bmQtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JhY2tncm91bmRfZGFzaF9vcmln
aW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJhY2tn
cm91bmQtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYmFja2dyb3VuZF9kYXNoX3NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtYmFja2dyb3VuZC1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hf
c2l6ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYmFja2dyb3VuZF9k
YXNoX3NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1i
YWNrZ3JvdW5kLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3Jk
ZXJfZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtp
dC1ib3JkZXItYWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVyU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyQmxvY2tFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JvcmRlcl9kYXNoX2FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1hZnRlciIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfYWZ0ZXJfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyQmxvY2tFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNo
X2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtYm9yZGVyLWFmdGVyLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNo
X2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRDb2xvciwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2FmdGVyX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9k
YXNoX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LWJvcmRlci1hZnRlci1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
YWZ0ZXJfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQmxvY2tFbmRTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3N0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJr
aXQtYm9yZGVyLWFmdGVyLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3N0
eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Fm
dGVyX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNo
X3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICItd2Via2l0LWJvcmRlci1hZnRlci1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYWZ0
ZXJfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVy
QmxvY2tFbmRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dpZHRo
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm9yZGVyX2Rhc2hfYWZ0ZXJfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQt
Ym9yZGVyLWFmdGVyLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dpZHRo
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tFbmRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2FmdGVy
X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9hZnRlcl9kYXNoX3dp
ZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICItd2Via2l0LWJvcmRlci1hZnRlci13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3Jl
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
YmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Jl
Zm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3JkZXIt
YmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9jb2xvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydENvbG9yKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3Jl
X2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQmxvY2tTdGFydENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfY29sb3IsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9jb2xvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3Jk
ZXItYmVmb3JlLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9zdHlsZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydFN0eWxl
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfYmVmb3JlX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci1iZWZv
cmUtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3N0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVyQmxvY2tTdGFydFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hf
c3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFzaF9zdHlsZVNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFz
aF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tT
dGFydFdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3dpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYmVmb3JlX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJv
cmRlci1iZWZvcmUtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JlZm9yZV9kYXNoX3dpZHRo
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFydFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYmVm
b3JlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9iZWZvcmVfZGFz
aF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiLXdlYmtpdC1ib3JkZXItYmVmb3JlLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9i
b3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9s
ZWZ0X2Rhc2hfcmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItYm90dG9tLWxl
ZnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFk
aXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1ib3R0b20tbGVm
dC1yYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0X2Rhc2hfcmFk
aXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdo
dFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9yaWdodF9kYXNo
X3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0
X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
cmlnaHRfZGFzaF9yYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JvcmRlcl9kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWVuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1l
bmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9lbmRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2NvbG9yR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItZW5kLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9lbmRfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZENvbG9yLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF9lbmRfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3JkZXItZW5kLWNvbG9yIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3Jk
ZXJfZGFzaF9lbmRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW5saW5lRW5kU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmRfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtYm9yZGVyLWVuZC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfc3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2Vu
ZF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfc3R5
bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtYm9yZGVyLWVuZC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZW5kX2Rhc2hf
d2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZUVu
ZFdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfZW5kX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci1lbmQt
d2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lRW5kV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9lbmRfZGFzaF93aWR0aCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1l
bmQtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2ZpdEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNo
X2ZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JvcmRlcl9kYXNoX2ZpdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWZp
dCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfZml0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfZml0
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWJvcmRlci1maXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9z
cGFjaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ob3Jpem9udGFsX2Rh
c2hfc3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX2hvcml6b250YWxfZGFzaF9zcGFjaW5nR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3Jk
ZXJfZGFzaF9ob3Jpem9udGFsX2Rhc2hfc3BhY2luZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckhvcml6b250YWxTcGFjaW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfaG9yaXpvbnRhbF9kYXNoX3NwYWNp
bmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9ob3Jpem9udGFsX2Rhc2hfc3BhY2lu
Z1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
LXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9p
bWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1h
Z2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLWltYWdlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFz
aF9pbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hf
aW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9pbWFnZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3JkZXIt
aW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3JhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQt
Ym9yZGVyLXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfcmFkaXVzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyUmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm9yZGVyX2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJvcmRlci1yYWRpdXMiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
cmRlcl9kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9k
YXNoX3N0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3JkZXItc3RhcnQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JvcmRlcl9kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3JkZXJfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0U2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Vi
a2l0LWJvcmRlci1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9jb2xvckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRDb2xv
cikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rh
c2hfc3RhcnRfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXN0YXJ0
LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2NvbG9yU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVySW5saW5lU3RhcnRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfY29s
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2NvbG9yU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWJvcmRlci1zdGFydC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9zdHls
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRT
dHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVy
X2Rhc2hfc3RhcnRfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXN0
YXJ0LXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVySW5saW5lU3RhcnRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hf
c3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0eWxlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Vi
a2l0LWJvcmRlci1zdGFydC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF93
aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3Rh
cnRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3dpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfc3RhcnRfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVy
LXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3dpZHRoU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3N0YXJ0X2Rh
c2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3dpZHRo
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LWJvcmRlci1zdGFydC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wTGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9sZWZ0
X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9y
ZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRv
cExlZnRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFz
aF9yaWdodF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm9yZGVyX2Rhc2hfdG9wX2Rhc2hf
cmlnaHRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9yaWdodF9kYXNoX3JhZGl1
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF90b3BfZGFzaF9yaWdodF9kYXNo
X3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rh
c2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF92ZXJ0aWNhbF9kYXNoX3NwYWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJf
ZGFzaF92ZXJ0aWNhbF9kYXNoX3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNoX3Nw
YWNpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJvcmRlci12ZXJ0aWNhbC1zcGFjaW5nIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNoX3NwYWNpbmdTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNo
X3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3JkZXJfZGFzaF92ZXJ0aWNhbF9kYXNoX3Nw
YWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtYm9yZGVyLXZlcnRpY2FsLXNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2Fs
aWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbikp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9ib3hfZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2FsaWduR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1ib3gtYWxpZ24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2FsaWduU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0Qm94QWxpZ24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JveF9kYXNoX2FsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1hbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2JyZWFrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRCb3hEZWNvcmF0aW9uQnJlYWspKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlv
bl9kYXNoX2JyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2JyZWFrR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1ib3gtZGVjb3JhdGlvbi1icmVhayIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX2JyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94RGVjb3JhdGlvbkJyZWFr
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfYm94X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2JyZWFrLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym94X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2JyZWFrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFr
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9kaXJl
Y3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9ib3hfZGFzaF9kaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1k
aXJlY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2RpcmVjdGlvblNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dEJveERpcmVjdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2RpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JveF9kYXNoX2RpcmVjdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtZGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFz
aF9mbGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX2ZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1ib3gtZmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdEJveEZsZXgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9mbGV4LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
Ym94X2Rhc2hfZmxleFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtZmxleCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNo
X2dyb3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4
R3JvdXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hf
ZmxleF9kYXNoX2dyb3VwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3gtZmxleC1ncm91cCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94
RmxleEdyb3VwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfZmxleF9kYXNoX2dyb3VwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1mbGV4LWdyb3VwIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9ib3hfZGFzaF9saW5lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94TGluZXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfbGluZXMsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5l
c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm94LWxpbmVzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9s
aW5lc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfbGluZXMsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9saW5lc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtbGluZXMiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2JveF9kYXNoX29yZGluYWxfZGFzaF9ncm91cEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29y
ZGluYWxfZGFzaF9ncm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29yZGluYWxfZGFzaF9ncm91cEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXAiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29yZGlu
YWxfZGFzaF9ncm91cFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX29yZGluYWxfZGFzaF9ncm91cCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX29y
ZGluYWxfZGFzaF9ncm91cFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rh
c2hfb3JpZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hP
cmllbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JpZW50LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfb3JpZW50R2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1ib3gtb3JpZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmll
bnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmllbnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9vcmllbnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYm94LW9yaWVudCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfYm94X2Rhc2hfcGFja0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0Qm94UGFjaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9wYWNrLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFja0dl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtYm94LXBhY2siKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3BhY2tT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcGFjaywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2JveF9kYXNoX3BhY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtYm94LXBhY2siKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNo
X3JlZmxlY3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFJl
ZmxlY3QpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfYm94X2Rhc2hfcmVmbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3JlZmxlY3RH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1yZWZsZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9y
ZWZsZWN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3JlZmxl
Y3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9yZWZsZWN0U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWJveC1yZWZsZWN0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9ib3hfZGFzaF9zaGFkb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdlYmtpdEJveFNoYWRvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9zaGFkb3csIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9i
b3hfZGFzaF9zaGFkb3dHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1zaGFkb3ciKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2JveF9kYXNoX3NoYWRvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Jv
eF9kYXNoX3NoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3NoYWRvd1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1i
b3gtc2hhZG93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9zaXppbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJveFNpemluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ib3hfZGFzaF9zaXppbmcs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9ib3hfZGFzaF9zaXppbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWJveC1zaXppbmciKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2JveF9kYXNoX3NpemluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJveFNpemluZywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9k
YXNoX3NpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2JveF9kYXNoX3NpemluZ1NldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ib3gt
c2l6aW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jbGlwX2Rhc2hfcGF0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q2xpcFBhdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xpcF9kYXNoX3BhdGgsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jbGlw
X2Rhc2hfcGF0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY2xpcC1wYXRoIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9j
bGlwX2Rhc2hfcGF0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBQYXRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY2xpcF9kYXNoX3BhdGgs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9jbGlwX2Rhc2hfcGF0aFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1jbGlwLXBhdGgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2NvbHVtbl9kYXNoX2F4aXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkF4aXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYXhpcywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVt
bl9kYXNoX2F4aXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbi1heGlzIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9heGlzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQXhpcywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Nv
bHVtbl9kYXNoX2F4aXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9heGlzU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWNvbHVtbi1heGlzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNoX2FmdGVyR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXIsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9i
cmVha19kYXNoX2FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0
ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXJTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5CcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9hZnRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXJTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29s
dW1uLWJyZWFrLWFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9icmVha19kYXNoX2JlZm9yZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZv
cmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9icmVha19kYXNoX2JlZm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLWJy
ZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rh
c2hfYmVmb3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9iZWZv
cmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtf
ZGFzaF9pbnNpZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hfaW5z
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfYnJlYWtfZGFzaF9pbnNpZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Vi
a2l0LWNvbHVtbi1icmVhay1pbnNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2JyZWFrX2Rhc2hf
aW5zaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9icmVha19kYXNoX2luc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2Jy
ZWFrX2Rhc2hfaW5zaWRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGUiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVt
bl9kYXNoX2NvdW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5D
b3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9jb3VudCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2NvdW50
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tY291bnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9k
YXNoX2NvdW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uQ291bnQsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9jb3Vu
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2NvdW50U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1jb3Vu
dCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfZmlsbEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Q29sdW1uRmlsbCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9maWxsLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29s
dW1uX2Rhc2hfZmlsbEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLWZpbGwiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2NvbHVtbl9kYXNoX2ZpbGxTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5GaWxsLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1u
X2Rhc2hfZmlsbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2ZpbGxTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29s
dW1uLWZpbGwiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2dhcEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX2dhcCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2NvbHVtbl9kYXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLWdhcCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfY29sdW1uX2Rhc2hfZ2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uR2FwLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1u
X2Rhc2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfZ2FwU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVt
bi1nYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3Byb2dyZXNzaW9uR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Qcm9ncmVzc2lvbikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9wcm9ncmVzc2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3Byb2dyZXNzaW9uR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tcHJvZ3Jlc3Npb24iKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9k
YXNoX3Byb2dyZXNzaW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUHJvZ3Jlc3Npb24sIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9wcm9ncmVzc2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNo
X3Byb2dyZXNzaW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1wcm9ncmVzc2lvbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfcnVsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXJ1bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXJ1bGUiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Nv
bHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Q29sdW1uUnVsZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFz
aF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtY29sdW1uLXJ1bGUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9j
b2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVf
ZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF9jb2xv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
LXdlYmtpdC1jb2x1bW4tcnVsZS1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNo
X3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlU3R5
bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rh
c2hfcnVsZV9kYXNoX3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1jb2x1bW4tcnVsZS1z
dHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Q29sdW1uUnVsZVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfcnVsZV9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1ydWxl
LXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9j
b2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbi1ydWxlLXdpZHRoIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1
bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5SdWxlV2lkdGgsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF9ydWxlX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXJ1bGUtd2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Nv
bHVtbl9kYXNoX3NwYW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVt
blNwYW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfc3BhbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3NwYW5H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbi1zcGFuIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFz
aF9zcGFuU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbl9kYXNoX3NwYW4sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF9zcGFuU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWNvbHVtbi1zcGFuIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9jb2x1bW5fZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q29sdW1uV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1uX2Rhc2hfd2lkdGgsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5f
ZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtY29sdW1uLXdpZHRoIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jb2x1bW5fZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1u
X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9jb2x1bW5fZGFzaF93aWR0aFNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1j
b2x1bW4td2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUNvbHVtbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY29sdW1ucywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICItd2Via2l0LWNvbHVtbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfY29sdW1ucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2NvbHVtbnNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
Y29sdW1ucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfY3Vyc29yX2Rhc2hfdmlzaWJpbGl0eUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0Q3Vyc29yVmlzaWJpbGl0eSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9jdXJzb3JfZGFzaF92aXNpYmlsaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY3Vyc29yX2Rhc2hfdmlzaWJpbGl0eUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIi13ZWJraXQtY3Vyc29yLXZpc2liaWxpdHkiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNo
X3Zpc2liaWxpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRDdXJzb3JWaXNpYmlsaXR5LCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfY3Vy
c29yX2Rhc2hfdmlzaWJpbGl0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2N1cnNvcl9kYXNoX3Zpc2li
aWxpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtY3Vyc29yLXZpc2liaWxpdHkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZpbHRlckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmlsdGVyKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZpbHRlciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2ZpbHRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtZmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0ZXJT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlGaWx0ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9maWx0
ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtZmlsdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlGbGV4KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXgsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLXdlYmtpdC1mbGV4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2Zs
ZXgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9iYXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9iYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9iYXNpc0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtZmxleC1iYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5RmxleEJhc2lzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Jhc2lzLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfZmxleF9kYXNoX2Jhc2lzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgtYmFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9k
aXJlY3Rpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhEaXJlY3Rp
b24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2RpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9kaXJlY3Rp
b25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWZsZXgtZGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4
X2Rhc2hfZGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleERpcmVjdGlvbiwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9kaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZGlyZWN0aW9uU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWZsZXgtZGlyZWN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZmxvd0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX2Zs
b3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9mbGV4X2Rhc2hfZmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtZmxleC1mbG93Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9mbGV4X2Rhc2hfZmxvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhGbG93LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9k
YXNoX2Zsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZmxvd1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1mbGV4LWZs
b3ciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9ncm93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlGbGV4R3JvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZ3JvdywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9ncm93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1mbGV4LWdyb3ciKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhf
ZGFzaF9ncm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfZ3JvdywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9ncm93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgtZ3JvdyIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
ZmxleF9kYXNoX3Nocmlua0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rmxl
eFNocmluaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfc2hyaW5rLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3Nocmlu
a0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtZmxleC1zaHJpbmsiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFz
aF9zaHJpbmtTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4U2hyaW5rLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZmxleF9kYXNoX3Nocmluaywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF9zaHJpbmtTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtZmxleC1zaHJpbmsiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2ZsZXhfZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfd3JhcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF93cmFw
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1mbGV4LXdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZsZXhfZGFzaF93
cmFwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5RmxleFdyYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mbGV4X2Rhc2hfd3JhcCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2ZsZXhfZGFzaF93cmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWZsZXgtd3JhcCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9k
YXNoX2tlcm5pbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRLZXJuaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRfZGFzaF9rZXJuaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX2tl
cm5pbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWZvbnQta2VybmluZyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9u
dF9kYXNoX2tlcm5pbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2ZvbnRf
ZGFzaF9rZXJuaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX2tlcm5pbmdTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
Zm9udC1rZXJuaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5nR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2ZvbnRfZGFzaF9zbW9vdGhpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5nR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLXdlYmtpdC1mb250LXNtb290aGluZyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX3Ntb290aGluZ1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9mb250X2Rhc2hfc21vb3RoaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfZm9udF9kYXNoX3Ntb290aGluZ1NldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1mb250LXNtb290
aGluZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVyR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfY2hhcmFjdGVyR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1oeXBoZW5hdGUtY2hhcmFjdGVyIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9jaGFyYWN0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0
ZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9oeXBoZW5hdGVfZGFzaF9jaGFyYWN0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9jaGFyYWN0ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtaHlwaGVuYXRlLWNoYXJhY3RlciIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
aHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9hZnRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlcikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBo
ZW5hdGVfZGFzaF9saW1pdF9kYXNoX2FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9h
ZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtaHlwaGVuYXRlLWxpbWl0LWFmdGVyIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2FmdGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlTGltaXRBZnRlciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYWZ0ZXIs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2FmdGVyU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LWh5cGhlbmF0ZS1saW1pdC1hZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFz
aF9iZWZvcmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUxpbWl0QmVmb3JlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hf
YmVmb3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9iZWZvcmVHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICItd2Via2l0LWh5cGhlbmF0ZS1saW1pdC1iZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNo
X2xpbWl0X2Rhc2hfYmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZv
cmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9oeXBoZW5hdGVfZGFzaF9saW1pdF9kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfYmVmb3JlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWh5cGhlbmF0ZS1saW1p
dC1iZWZvcmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0ZV9kYXNoX2xpbWl0X2Rhc2hfbGluZXNHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lcywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbmF0
ZV9kYXNoX2xpbWl0X2Rhc2hfbGluZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWh5cGhlbmF0
ZS1saW1pdC1saW5lcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGltaXRfZGFzaF9saW5lc1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0TGluZXMsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9oeXBoZW5hdGVfZGFz
aF9saW1pdF9kYXNoX2xpbmVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfaHlwaGVuYXRlX2Rhc2hfbGlt
aXRfZGFzaF9saW5lc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLXdlYmtpdC1oeXBoZW5hdGUtbGltaXQtbGluZXMiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhl
bnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfaHlwaGVucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbnNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWh5
cGhlbnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2h5cGhlbnNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
aHlwaGVucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2h5cGhlbnNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtaHlwaGVucyIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaW5pdGlhbF9kYXNoX2xldHRlckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0SW5pdGlhbExldHRlcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9pbml0aWFsX2Rhc2hfbGV0dGVy
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfaW5pdGlhbF9kYXNoX2xldHRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtaW5pdGlhbC1s
ZXR0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX2luaXRpYWxfZGFzaF9sZXR0ZXJTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRJ
bml0aWFsTGV0dGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfaW5pdGlhbF9kYXNoX2xldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2luaXRpYWxfZGFzaF9sZXR0ZXJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtaW5pdGlhbC1sZXR0ZXIiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2p1c3Rp
ZnlfZGFzaF9jb250ZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0
aWZ5Q29udGVudCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVudCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2p1c3RpZnlf
ZGFzaF9jb250ZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2p1c3RpZnlfZGFzaF9jb250ZW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9qdXN0aWZ5X2Rhc2hfY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2p1c3RpZnlfZGFz
aF9jb250ZW50U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LWp1c3RpZnktY29udGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2l0
ZW1zR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5SXRlbXMpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2l0ZW1zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfanVzdGlmeV9kYXNoX2l0ZW1zR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiLXdlYmtpdC1qdXN0aWZ5LWl0ZW1zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hf
aXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlKdXN0aWZ5SXRlbXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfaXRlbXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9qdXN0aWZ5X2Rhc2hfaXRlbXNTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtanVzdGlmeS1pdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRMaW5lQWxpZ24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2FsaWduLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bGluZV9kYXNoX2FsaWduR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1saW5lLWFsaWduIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9saW5lX2Rhc2hfYWxpZ25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lQWxpZ24sIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9s
aW5lX2Rhc2hfYWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfYWxpZ25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
bGluZS1hbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNoX2NvbnRhaW5HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCb3hDb250YWluKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JveF9kYXNoX2Nv
bnRhaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJveENv
bnRhaW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9saW5lX2Rhc2hfYm94X2Rhc2hfY29udGFpbiwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xpbmVfZGFzaF9ib3hfZGFzaF9jb250YWluU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX2xpbmVfZGFzaF9icmVha0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9icmVhaywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9icmVh
a0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbGluZS1icmVhayIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNo
X2JyZWFrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JyZWFrLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2JyZWFrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtYnJlYWsiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xpbmVfZGFzaF9jbGFtcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0TGluZUNsYW1wKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9jbGFtcCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9j
bGFtcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbGluZS1jbGFtcCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9k
YXNoX2NsYW1wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2Ns
YW1wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX2NsYW1wU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtY2xhbXAi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX2xpbmVfZGFzaF9ncmlkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRMaW5lR3JpZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hfZ3JpZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVf
ZGFzaF9ncmlkR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1saW5lLWdyaWQiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xp
bmVfZGFzaF9ncmlkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUdyaWQsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9saW5lX2Rhc2hf
Z3JpZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9ncmlkU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxpbmUtZ3JpZCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbGluZV9kYXNoX3NuYXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVTbmFwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9zbmFwLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9k
YXNoX3NuYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LWxpbmUtc25hcCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGlu
ZV9kYXNoX3NuYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xpbmVfZGFzaF9z
bmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbGluZV9kYXNoX3NuYXBTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbGluZS1zbmFwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9sb2NhbGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dExvY2FsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2NhbGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2NhbGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICIt
d2Via2l0LWxvY2FsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TG9jYWxl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbG9jYWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9jYWxlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxvY2FsZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dp
Y2FsX2Rhc2hfaGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1sb2dpY2FsLWhlaWdodCIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X2xvZ2ljYWxfZGFzaF9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rhc2hfaGVp
Z2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICItd2Via2l0LWxvZ2ljYWwtaGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlubGluZVNpemUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbG9naWNhbF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiLXdlYmtpdC1sb2dpY2FsLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlJbmxpbmVTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LWxvZ2ljYWwtd2lkdGgiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hcmdpbl9kYXNoX2FmdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlN
YXJnaW5CbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX2FmdGVyR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXJnaW4tYWZ0ZXIiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hcmdpbl9kYXNoX2FmdGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tFbmQsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJn
aW5fZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2FmdGVyU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0
LW1hcmdpbi1hZnRlciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xsYXBzZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xs
YXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlcl9kYXNoX2NvbGxhcHNlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFy
Z2luX2Rhc2hfYWZ0ZXJfZGFzaF9jb2xsYXBzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFy
Z2luLWFmdGVyLWNvbGxhcHNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9hZnRlcl9kYXNoX2NvbGxh
cHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX2FmdGVyX2Rhc2hfY29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9h
ZnRlcl9kYXNoX2NvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hcmdpbi1hZnRlci1jb2xsYXBzZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFyZ2luX2Rhc2hfYmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlN
YXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2JlZm9yZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdp
bl9kYXNoX2JlZm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLWJlZm9yZSIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tTdGFydCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hcmdpbl9kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2Jl
Zm9yZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiLXdlYmtpdC1tYXJnaW4tYmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9iZWZvcmVfZGFz
aF9jb2xsYXBzZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlQ29sbGFwc2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hf
Y29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9iZWZvcmVfZGFzaF9jb2xsYXBzZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtbWFyZ2luLWJlZm9yZS1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hf
YmVmb3JlX2Rhc2hfY29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hcmdpbl9kYXNoX2JlZm9yZV9kYXNoX2NvbGxhcHNlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWFyZ2luX2Rhc2hfYmVmb3JlX2Rhc2hfY29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLWJlZm9y
ZS1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2VHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxh
cHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbV9kYXNoX2NvbGxhcHNlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFy
Z2luX2Rhc2hfYm90dG9tX2Rhc2hfY29sbGFwc2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1h
cmdpbi1ib3R0b20tY29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbV9kYXNoX2Nv
bGxhcHNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJn
aW5fZGFzaF9ib3R0b21fZGFzaF9jb2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX2JvdHRvbV9kYXNoX2NvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hcmdpbi1ib3R0b20tY29sbGFwc2UiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9j
b2xsYXBzZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1t
YXJnaW4tY29sbGFwc2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9jb2xsYXBzZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX2NvbGxhcHNlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hcmdpbi1jb2xsYXBzZSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlNYXJnaW5JbmxpbmVFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfZW5kLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFy
Z2luX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXJnaW4tZW5kIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXJnaW5fZGFzaF9lbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmVFbmQsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJn
aW5fZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF9lbmRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFy
Z2luLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9k
YXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1h
cmdpbi1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJn
aW5JbmxpbmVTdGFydCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hcmdpbl9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFyZ2luX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXJnaW5fZGFz
aF90b3BfZGFzaF9jb2xsYXBzZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfdG9wX2Rh
c2hfY29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXJnaW5fZGFzaF90b3BfZGFzaF9jb2xsYXBzZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtbWFyZ2luLXRvcC1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2luX2Rhc2hfdG9w
X2Rhc2hfY29sbGFwc2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hcmdpbl9kYXNoX3RvcF9kYXNoX2NvbGxhcHNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFyZ2lu
X2Rhc2hfdG9wX2Rhc2hfY29sbGFwc2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFyZ2luLXRvcC1jb2xsYXBzZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFzaykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzayIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hf
aW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hf
Ym94X2Rhc2hfaW1hZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stYm94LWltYWdlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2UiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX291dHNldEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX291dHNldCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFz
aF9pbWFnZV9kYXNoX291dHNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1h
Z2Utb3V0c2V0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VPdXRzZXQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utb3V0c2V0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stYm94
LWltYWdlLXJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfcmVw
ZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlUmVwZWF0LCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNo
X2JveF9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNo
X2JveF9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hc2stYm94LWltYWdlLXJlcGVhdCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfc2xpY2VHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3NsaWNlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2Jv
eF9kYXNoX2ltYWdlX2Rhc2hfc2xpY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stYm94
LWltYWdlLXNsaWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF9zbGlj
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2Jv
eF9kYXNoX2ltYWdlX2Rhc2hfc2xpY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfYm94
X2Rhc2hfaW1hZ2VfZGFzaF9zbGljZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zbGljZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfc291cmNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfc291cmNlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9k
YXNoX2ltYWdlX2Rhc2hfc291cmNlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS1zb3VyY2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3NvdXJj
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9i
b3hfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9i
b3hfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hc2tfZGFzaF9ib3hfZGFzaF9pbWFnZV9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfYm94X2Rhc2hfaW1hZ2VfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hf
ZGFzaF9pbWFnZV9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9kYXNoX2ltYWdlX2Rhc2hfd2lkdGhT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9ib3hf
ZGFzaF9pbWFnZV9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2JveF9k
YXNoX2ltYWdlX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1ib3gtaW1hZ2Utd2lkdGgiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9jbGlwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQ2xpcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY2xpcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jbGlw
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLWNsaXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9j
bGlwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY2xpcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jbGlwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hc2stY2xpcCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFza19kYXNoX2NvbXBvc2l0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TWFza0NvbXBvc2l0ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfY29tcG9zaXRlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
bWFza19kYXNoX2NvbXBvc2l0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1jb21wb3Np
dGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hc2tfZGFzaF9jb21wb3NpdGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2NvbXBvc2l0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21h
c2tfZGFzaF9jb21wb3NpdGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1jb21wb3NpdGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFz
aF9pbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0lt
YWdlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9pbWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9pbWFnZUdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1pbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdl
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX2ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1hc2staW1hZ2UiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X21hc2tfZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX29yaWdpbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFz
aF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stb3JpZ2luIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfb3JpZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tf
ZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfb3JpZ2luU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1h
c2stb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNr
X2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Vi
a2l0LW1hc2stcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvblNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF94R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3Np
dGlvbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF94R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
LXdlYmtpdC1tYXNrLXBvc2l0aW9uLXgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNo
X3hTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0
aW9uX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3hT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13
ZWJraXQtbWFzay1wb3NpdGlvbi14Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9zaXRpb25fZGFzaF95
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Z
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3ksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfcG9z
aXRpb25fZGFzaF95R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXkiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3lTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25ZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3Bvc2l0aW9uX2Rhc2hfeSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hc2tfZGFzaF9wb3NpdGlvbl9kYXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1wb3NpdGlvbi15Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9tYXNrX2Rhc2hfcmVwZWF0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFzaF9yZXBlYXQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNr
X2Rhc2hfcmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1tYXNrLXJlcGVhdCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX3JlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXNrX2Rhc2hfcmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3JlcGVhdFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtp
dC1tYXNrLXJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21hc2tfZGFz
aF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza19kYXNoX3NpemVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1hc2stc2l6
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX21hc2tfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWFza19kYXNoX3NpemVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtbWFzay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfc291cmNlX2Rhc2hfdHlwZUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TWFza1NvdXJjZVR5cGUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGUsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXNrX2Rhc2hfc291cmNlX2Rh
c2hfdHlwZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtbWFzay1zb3VyY2UtdHlwZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU291
cmNlVHlwZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX21hc2tfZGFzaF9zb3VyY2VfZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWFza19kYXNoX3NvdXJjZV9kYXNoX3R5cGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtbWFzay1zb3VyY2UtdHlwZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5TWF4QmxvY2tTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2lj
YWxfZGFzaF9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC1tYXgtbG9naWNhbC1oZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xvZ2lj
YWxfZGFzaF9oZWlnaHRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXhCbG9ja1NpemUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9s
b2dpY2FsX2Rhc2hfaGVpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9k
YXNoX2hlaWdodFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC1tYXgtbG9naWNhbC1oZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21heF9kYXNoX2xv
Z2ljYWxfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4
SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGgsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
YXhfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1heC1s
b2dpY2FsLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9tYXhfZGFzaF9sb2dpY2FsX2Rhc2hfd2lkdGhTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXhJbmxpbmVTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfbWF4X2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1heC1s
b2dpY2FsLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNaW5CbG9ja1NpemUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF9o
ZWlnaHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LW1pbi1sb2dpY2FsLWhlaWdodCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX2hlaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbkJsb2NrU2l6
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF9oZWlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9t
aW5fZGFzaF9sb2dpY2FsX2Rhc2hfaGVpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW1pbi1sb2dpY2FsLWhlaWdodCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfbWluX2Rhc2hfbG9naWNhbF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlNaW5JbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2lj
YWxfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtbWluLWxvZ2ljYWwtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX21pbl9kYXNoX2xvZ2ljYWxf
ZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1pbklubGluZVNpemUsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dp
Y2FsX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9taW5fZGFzaF9sb2dpY2FsX2Rhc2hf
d2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtbWluLWxvZ2ljYWwtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
LXdlYmtpdC1uYnNwLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25ic3BfZGFzaF9tb2RlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9uYnNwX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX25i
c3BfZGFzaF9tb2RlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICItd2Via2l0LW5ic3AtbW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3BhY2l0eUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcGFjaXR5
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfb3BhY2l0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtb3BhY2l0eSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3Bh
Y2l0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU9wYWNpdHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfb3BhY2l0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC1vcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5T3JkZXIpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfb3JkZXIsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9vcmRlckdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtb3JkZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29yZGVyU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5T3JkZXIsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF9vcmRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX29yZGVyU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LW9yZGVy
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYWZ0ZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYWZ0
ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9wYWRkaW5nX2Rhc2hfYWZ0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXBhZGRpbmct
YWZ0ZXIiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9k
YXNoX3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9hZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdC
bG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3BhZGRpbmdfZGFzaF9hZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BhZGRp
bmdfZGFzaF9hZnRlclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiLXdlYmtpdC1wYWRkaW5nLWFmdGVyIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hf
YmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tT
dGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYmVmb3JlLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2Jl
Zm9yZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtcGFkZGluZy1iZWZvcmUiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9iZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2tTdGFydCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Bh
ZGRpbmdfZGFzaF9iZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfYmVmb3Jl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICIt
d2Via2l0LXBhZGRpbmctYmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lRW5kKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3BhZGRpbmdfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
LXdlYmtpdC1wYWRkaW5nLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX2VuZFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVBhZGRpbmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfcGFkZGluZ19kYXNoX2VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1wYWRkaW5nLWVuZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGlu
Z19kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5n
SW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGFkZGluZ19k
YXNoX3N0YXJ0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1wYWRkaW5nLXN0YXJ0Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9wYWRkaW5nX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nSW5saW5lU3RhcnQsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9wYWRkaW5nX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wYWRkaW5nX2Rhc2hfc3Rh
cnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Ii13ZWJraXQtcGFkZGluZy1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNw
ZWN0aXZlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfcGVyc3BlY3RpdmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXBlcnNwZWN0aXZl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVy
c3BlY3RpdmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1wZXJzcGVjdGl2
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0
aXZlX2Rhc2hfb3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICItd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9v
cmlnaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtcGVyc3BlY3RpdmUtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9k
YXNoX3hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3Jp
Z2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3gsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJz
cGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3hHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXBlcnNw
ZWN0aXZlLW9yaWdpbi14Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3hT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29y
aWdpbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9k
YXNoX3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luLXgiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luX2Rhc2hfeUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVy
c3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rh
c2hfeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rhc2hfb3Jp
Z2luX2Rhc2hfeVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luWSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0
aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3BlcnNwZWN0aXZlX2Rh
c2hfb3JpZ2luX2Rhc2hfeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teSIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcHJp
bnRfZGFzaF9jb2xvcl9kYXNoX2FkanVzdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wcmludF9kYXNoX2Nv
bG9yX2Rhc2hfYWRqdXN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2Rhc2hfd2Via2l0X2Rhc2hfcHJpbnRfZGFzaF9jb2xvcl9kYXNoX2FkanVzdEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIi13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wcmludF9kYXNoX2Nv
bG9yX2Rhc2hfYWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVW
YWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0UHJpbnRDb2xvckFkanVzdCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3ByaW50X2Rhc2hfY29sb3JfZGFzaF9hZGp1c3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9wcmludF9k
YXNoX2NvbG9yX2Rhc2hfYWRqdXN0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXByaW50LWNvbG9yLWFkanVzdCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
cnRsX2Rhc2hfb3JkZXJpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFJ0bE9yZGVyaW5nKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J0bF9kYXNoX29yZGVyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcnRsX2Rh
c2hfb3JkZXJpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXJ0bC1vcmRlcmluZyIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfcnRsX2Rhc2hfb3JkZXJpbmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3J0bF9kYXNoX29yZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfcnRsX2Rhc2hfb3JkZXJpbmdT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13
ZWJraXQtcnRsLW9yZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ydWJ5X2Rhc2hfcG9zaXRpb25HZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF9ydWJ5X2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9ydWJ5X2Rhc2hfcG9zaXRpb25HZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICItd2Via2l0LXJ1YnktcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFzaF9wb3NpdGlvblNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFzaF9wb3NpdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3J1YnlfZGFzaF9wb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1ydWJ5LXBvc2l0aW9u
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaGFwZUltYWdlVGhyZXNob2xkKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hf
dGhyZXNob2xkR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlT
aGFwZUltYWdlVGhyZXNob2xkLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9pbWFnZV9kYXNoX3RocmVzaG9sZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQt
c2hhcGUtaW1hZ2UtdGhyZXNob2xkIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpbkdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVNYXJnaW4pKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
c2hhcGVfZGFzaF9tYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpbkdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13
ZWJraXQtc2hhcGUtbWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF9zaGFwZV9kYXNoX21hcmdpblNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVNoYXBlTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9tYXJnaW4sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF9zaGFwZV9kYXNoX21hcmdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC1zaGFwZS1tYXJnaW4iKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rh
c2hfb3V0c2lkZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRz
aWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfb3V0c2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3NoYXBlX2Rhc2hfb3V0c2lk
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtc2hhcGUtb3V0c2lkZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVf
ZGFzaF9vdXRzaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9v
dXRzaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfc2hhcGVfZGFzaF9vdXRzaWRlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXNoYXBl
LW91dHNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9jb21iaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfY29tYmluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9jb21iaW5lR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10
ZXh0LWNvbWJpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9jb21iaW5lU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfY29tYmluZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9jb21iaW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQtY29tYmluZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X2RlY29yYXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHREZWNvcmF0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX2RlY29yYXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtZGVjb3JhdGlvbiIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2RlY29yYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0
aW9uX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2NvbG9yR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNv
bG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9k
YXNoX2xpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtZGVjb3JhdGlvbi1saW5lIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbkxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xpbmVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1k
ZWNvcmF0aW9uLWxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25Ta2lwKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9k
ZWNvcmF0aW9uX2Rhc2hfc2tpcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdGV4dC1kZWNvcmF0
aW9uLXNraXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uU2tpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hf
c2tpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdl
YmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29y
YXRpb25TdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxl
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJr
aXQtdGV4dC1kZWNvcmF0aW9uLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9k
YXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9kZWNvcmF0aW9uX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVj
b3JhdGlvbl9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQtZGVjb3JhdGlvbi1zdHlsZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
dGV4dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9lZmZlY3RHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9kZWNvcmF0aW9uc19kYXNoX2luX2Rhc2hfZWZmZWN0LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9lZmZlY3RHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICIt
d2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVj
b3JhdGlvbnNfZGFzaF9pbl9kYXNoX2VmZmVjdFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2RlY29yYXRpb25zX2Rhc2hfaW5fZGFzaF9l
ZmZlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZGVjb3JhdGlvbnNfZGFzaF9pbl9k
YXNoX2VmZmVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX2VtcGhhc2lzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9k
YXNoX2VtcGhhc2lzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10ZXh0LWVtcGhhc2lzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1w
aGFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtdGV4dC1lbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rh
c2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0
LXRleHQtZW1waGFzaXMtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2Nv
bG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNp
c19kYXNoX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICItd2Via2l0LXRleHQtZW1waGFzaXMtY29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hf
ZW1waGFzaXNfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9u
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfcG9zaXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtp
dC10ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFz
aF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5bGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQt
dGV4dC1lbXBoYXNpcy1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfc3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9l
bXBoYXNpc19kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX2VtcGhhc2lz
X2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1lbXBoYXNpcy1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNo
X2ZpbGxfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEZpbGxDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9y
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX2ZpbGxfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdGV4
dC1maWxsLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9maWxsX2Rhc2hfY29sb3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfZmlsbF9kYXNoX2NvbG9yU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQt
ZmlsbC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX29yaWVudGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX29yaWVudGF0aW9uR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC10ZXh0LW9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfb3Jp
ZW50YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rh
c2hfb3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfb3JpZW50YXRpb25T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13
ZWJraXQtdGV4dC1vcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5R2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHkpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Vi
a2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NlY3VyaXR5R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiLXdlYmtpdC10ZXh0LXNlY3VyaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2VjdXJp
dHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2VjdXJp
dHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc2VjdXJpdHlTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1zZWN1
cml0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NpemVfZGFzaF9hZGp1c3RHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RleHRfZGFzaF9zaXplX2Rhc2hfYWRqdXN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3NpemVfZGFzaF9hZGp1c3RH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9zaXplX2Rhc2hfYWRqdXN0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Qs
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfc2l6ZV9kYXNoX2FkanVzdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9zaXplX2Rhc2hfYWRqdXN0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QiKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9zdHJva2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3N0cm9rZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9z
dHJva2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtc3Ryb2tlIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0
X2Rhc2hfc3Ryb2tlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFz
aF9zdHJva2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRleHQt
c3Ryb2tlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcikpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hf
Y29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90ZXh0X2Rhc2hfc3Ryb2tlX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdGV4dC1zdHJva2UtY29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RleHRf
ZGFzaF9zdHJva2VfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RleHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3Rl
eHRfZGFzaF9zdHJva2VfZGFzaF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4
dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNo
X3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10ZXh0LXVuZGVybGluZS1wb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0aW9uU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZVBvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bv
c2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX3Bvc2l0
aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICItd2Via2l0LXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9v
bUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dFpvb20pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdGV4dF9kYXNoX3pvb20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIi13ZWJraXQtdGV4dC16b29tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90ZXh0X2Rhc2hfem9vbVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRab29tLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdGV4dF9kYXNoX3pvb20sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90ZXh0X2Rhc2hfem9vbVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC10ZXh0LXpvb20iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNmb3JtKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNo
X3RyYW5zZm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3RyYW5zZm9ybUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3Jt
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93
ZWJraXRfZGFzaF90cmFuc2Zvcm1TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm0sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zv
cm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3JtIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVRyYW5zZm9ybU9yaWdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW4s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRyYW5zZm9y
bS1vcmlnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRy
YW5zZm9ybU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9k
YXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5YKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbl9kYXNoX3hTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5YLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNm
b3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNo
X29yaWdpbl9kYXNoX3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi14Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zv
cm1fZGFzaF9vcmlnaW5fZGFzaF95R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUcmFuc2Zvcm1PcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdl
YmtpdC10cmFuc2Zvcm0tb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3lTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5ZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hf
b3JpZ2luX2Rhc2hfeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9k
YXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi15Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9v
cmlnaW5fZGFzaF96R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2Zv
cm1PcmlnaW5aKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3osIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90
cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF96R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFu
c2Zvcm0tb3JpZ2luLXoiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3pTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW5aLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rh
c2hfeiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3pTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtdHJhbnNmb3JtLW9yaWdpbi16Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9zdHlsZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdHJhbnNmb3JtX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9zdHlsZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdHJhbnNmb3JtLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zv
cm1fZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNmb3JtX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2Zvcm1fZGFzaF9zdHls
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
LXdlYmtpdC10cmFuc2Zvcm0tc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25HZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNp
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RyYW5zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXRyYW5zaXRpb24iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtp
dF9kYXNoX3RyYW5zaXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9kYXNoX3dlYmtpdF9kYXNoX3RyYW5zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNpdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2l0aW9uRGVsYXkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdHJhbnNpdGlvbl9kYXNoX2RlbGF5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFuc2l0
aW9uLWRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZGVsYXlTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2l0aW9uRGVsYXksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF90cmFuc2l0aW9uX2Rhc2hfZGVsYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rh
c2hfdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNo
X2R1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdl
YmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZHVyYXRp
b25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVyYXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hf
ZHVyYXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfZHVyYXRpb25TZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJr
aXQtdHJhbnNpdGlvbi1kdXJhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3Byb3BlcnR5
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHkp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rh
c2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNo
X3Byb3BlcnR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9u
UHJvcGVydHksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFz
aF93ZWJraXRfZGFzaF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHksIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFz
aF90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24pKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0
X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9k
YXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLXdlYmtpdC10cmFuc2l0
aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNo
X2Z1bmN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdHJh
bnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICItd2Via2l0LXRyYW5zaXRpb24tdGltaW5n
LWZ1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfZHJhZ0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX2Ry
YWcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRf
ZGFzaF91c2VyX2Rhc2hfZHJhZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIi13ZWJraXQtdXNlci1kcmFnIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJr
aXRfZGFzaF91c2VyX2Rhc2hfZHJhZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
dXNlcl9kYXNoX2RyYWcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfZHJhZ1NldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC11
c2VyLWRyYWciKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9kYXNoX3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9tb2RpZnlHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNo
X21vZGlmeSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3VzZXJfZGFzaF9tb2RpZnlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXVzZXIt
bW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfbW9kaWZ5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VXNl
ck1vZGlmeSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNo
X3dlYmtpdF9kYXNoX3VzZXJfZGFzaF9tb2RpZnksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rh
c2hfbW9kaWZ5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICItd2Via2l0LXVzZXItbW9kaWZ5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0R2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dl
YmtpdF9kYXNoX3VzZXJfZGFzaF9zZWxlY3QsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiLXdlYmtpdC11c2VyLXNlbGVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfdXNlcl9kYXNoX3NlbGVjdFNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZGFzaF93ZWJraXRfZGFzaF91c2VyX2Rhc2hfc2VsZWN0LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hf
d2Via2l0X2Rhc2hfdXNlcl9kYXNoX3NlbGVjdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiLXdlYmtpdC11c2VyLXNlbGVjdCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hf
d3JpdGluZ19kYXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdy
aXRpbmdNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3dyaXRpbmdfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3JpdGluZ19kYXNo
X21vZGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICItd2Via2l0LXdyaXRpbmctbW9kZSIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3Jp
dGluZ19kYXNoX21vZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kYXNoX3dlYmtpdF9kYXNoX3dyaXRpbmdfZGFz
aF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2Rhc2hfd2Via2l0X2Rhc2hfd3JpdGluZ19kYXNoX21vZGVTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi13ZWJraXQtd3JpdGlu
Zy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9jb250ZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlB
bGlnbkNvbnRlbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FsaWduX2Rhc2hfY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2NvbnRlbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGlnbi1j
b250ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YWxpZ25fZGFzaF9jb250ZW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QWxpZ25Db250ZW50LCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfY29udGVudCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9h
bGlnbl9kYXNoX2NvbnRlbnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImFsaWduLWNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2l0ZW1zR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX2l0ZW1zLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRlbXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJhbGlnbi1pdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRlbXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbkl0ZW1zLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfaXRl
bXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYWxpZ25fZGFzaF9pdGVtc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiYWxpZ24taXRlbXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGZHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWduU2VsZikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9zZWxmLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWduX2Rhc2hfc2VsZkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImFsaWduLXNlbGYiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbGlnbl9kYXNoX3NlbGZTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnblNlbGYsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25fZGFzaF9zZWxmLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWduX2Rhc2hfc2VsZlNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYWxpZ24tc2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50X2Rhc2hfYmFz
ZWxpbmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYWxpZ25tZW50
X2Rhc2hfYmFzZWxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbGlnbm1lbnQtYmFzZWxpbmUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbGlnbm1lbnRfZGFz
aF9iYXNlbGluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2FsaWdubWVudF9kYXNoX2Jhc2VsaW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbGlnbm1lbnQtYmFzZWxpbmUiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kZWxheUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGVsYXkpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlv
bl9kYXNoX2RlbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Fu
aW1hdGlvbl9kYXNoX2RlbGF5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYW5pbWF0aW9uLWRlbGF5Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rh
c2hfZGVsYXlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kZWxheSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25fZGFzaF9kZWxheVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYW5pbWF0aW9uLWRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZGlyZWN0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25EaXJlY3Rpb24pKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNo
X2RpcmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmlt
YXRpb25fZGFzaF9kaXJlY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb24tZGlyZWN0aW9u
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0
aW9uX2Rhc2hfZGlyZWN0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uRGlyZWN0aW9uLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2Rp
cmVjdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kaXJlY3Rpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFuaW1hdGlvbi1kaXJlY3Rpb24iKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25f
ZGFzaF9kdXJhdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0
aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiYW5pbWF0aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfZHVyYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25EdXJhdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9hbmltYXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9kdXJhdGlvblNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0
aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYW5pbWF0aW9uX2Rhc2hfZmlsbF9kYXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9maWxsX2Rhc2hf
bW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25f
ZGFzaF9maWxsX2Rhc2hfbW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImFuaW1hdGlvbi1maWxsLW1vZGUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRp
b25fZGFzaF9maWxsX2Rhc2hfbW9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkZpbGxNb2RlLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNo
X2ZpbGxfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2ZpbGxfZGFzaF9tb2RlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb24t
ZmlsbC1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uX2Rhc2hfaXRlcmF0aW9uX2Rhc2hfY291bnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9p
dGVyYXRpb25fZGFzaF9jb3VudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9pdGVyYXRpb25fZGFzaF9jb3VudFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2Nv
dW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbl9kYXNoX2l0ZXJhdGlvbl9kYXNoX2NvdW50U2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb24taXRlcmF0
aW9uLWNvdW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uX2Rhc2hfbmFtZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5QW5pbWF0aW9uTmFtZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfbmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
YW5pbWF0aW9uLW5hbWUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25fZGFzaF9uYW1lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFz
aF9uYW1lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX25hbWVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImFuaW1hdGlvbi1uYW1lIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfcGxheV9k
YXNoX3N0YXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmltYXRpb25Q
bGF5U3RhdGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFzaF9zdGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9wbGF5X2Rhc2hfc3RhdGVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJhbmltYXRpb24tcGxheS1zdGF0ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNoX3BsYXlfZGFzaF9zdGF0
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUFuaW1hdGlvblBsYXlTdGF0ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25fZGFzaF9wbGF5X2Rhc2hfc3RhdGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
YW5pbWF0aW9uX2Rhc2hfcGxheV9kYXNoX3N0YXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbmltYXRpb24tcGxheS1zdGF0ZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FuaW1hdGlvbl9kYXNo
X3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlBbmltYXRpb25UaW1pbmdGdW5jdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rp
b24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYW5pbWF0aW9uX2Rh
c2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhbmltYXRpb24tdGltaW5n
LWZ1bmN0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYW5pbWF0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9hbmltYXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hbmltYXRpb25f
ZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdF9kYXNoX3Jh
dGlvR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlBc3BlY3RSYXRpbykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYXNwZWN0
X2Rhc2hfcmF0aW8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYXNw
ZWN0X2Rhc2hfcmF0aW9HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJhc3BlY3QtcmF0aW8iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9hc3BlY3RfZGFzaF9yYXRpb1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUFzcGVjdFJhdGlvLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2FzcGVjdF9kYXNoX3JhdGlvLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2FzcGVjdF9kYXNoX3JhdGlvU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhc3BlY3Qt
cmF0aW8iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
YWNrZ3JvdW5kX2Rhc2hfYXR0YWNobWVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9hdHRhY2htZW50LCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9hdHRh
Y2htZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZC1hdHRhY2htZW50Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2F0
dGFjaG1lbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYXR0YWNobWVu
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYXR0YWNobWVudFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dyb3VuZC1hdHRhY2htZW50Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9k
YXNoX2JsZW5kX2Rhc2hfbW9kZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
QmFja2dyb3VuZEJsZW5kTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2JsZW5kX2Rhc2hfbW9kZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYmxlbmRf
ZGFzaF9tb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFja2dyb3VuZC1ibGVuZC1tb2RlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2JsZW5kX2Rhc2hfbW9kZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRCbGVuZE1vZGUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2Js
ZW5kX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfYmxlbmRfZGFzaF9tb2RlU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5k
LWJsZW5kLW1vZGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY2xpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5QmFja2dyb3VuZENsaXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9jbGlwLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9jbGlwR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYmFja2dyb3VuZC1jbGlwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX2NsaXBTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ2xpcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNr
Z3JvdW5kX2Rhc2hfY2xpcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY2xpcFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dyb3VuZC1jbGlwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3Vu
ZF9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX2JhY2tncm91bmRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJiYWNr
Z3JvdW5kLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYmFja2dyb3VuZF9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmQtY29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rh
c2hfaW1hZ2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRJ
bWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYmFja2dyb3VuZF9kYXNoX2ltYWdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9pbWFnZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91
bmQtaW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9iYWNrZ3JvdW5kX2Rhc2hfaW1hZ2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNo
X2ltYWdlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9pbWFnZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYmFja2dyb3VuZC1pbWFnZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9v
cmlnaW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmln
aW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JhY2tncm91bmRfZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX29yaWdpbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJhY2tncm91
bmQtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYmFja2dyb3VuZF9kYXNoX29yaWdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4s
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9k
YXNoX29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfb3JpZ2luU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLW9yaWdpbiIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9wb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYmFja2dyb3VuZC1wb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0
aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9k
YXNoX3Bvc2l0aW9uX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF94R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYmFj
a2dyb3VuZC1wb3NpdGlvbi14Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3Bvc2l0aW9uX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rh
c2hfcG9zaXRpb25fZGFzaF94U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXgiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25f
ZGFzaF95R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF95LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3lHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXkiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFz
aF95U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcG9zaXRpb25fZGFzaF95
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JhY2tncm91bmRfZGFzaF9wb3NpdGlvbl9kYXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJhY2tncm91bmQtcG9zaXRpb24teSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91
bmRfZGFzaF9yZXBlYXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9yZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3JlcGVhdEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJhY2tncm91bmQtcmVwZWF0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3JlcGVhdFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFj
a2dyb3VuZF9kYXNoX3JlcGVhdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfcmVwZWF0U2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLXJl
cGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jh
Y2tncm91bmRfZGFzaF9zaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3NpemUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYmFja2dyb3VuZF9kYXNoX3NpemVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJi
YWNrZ3JvdW5kLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9iYWNrZ3JvdW5kX2Rhc2hfc2l6ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXpl
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JhY2tncm91bmRf
ZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JhY2tncm91bmRfZGFzaF9zaXplU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJiYWNrZ3JvdW5kLXNpemUiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNlbGluZV9kYXNoX3No
aWZ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0KSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9iYXNl
bGluZV9kYXNoX3NoaWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2Jhc2VsaW5lX2Rhc2hfc2hpZnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJiYXNlbGluZS1zaGlmdCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lX2Rh
c2hfc2hpZnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jhc2VsaW5lX2Rhc2hfc2hpZnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmFzZWxpbmVf
ZGFzaF9zaGlmdFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYmFzZWxpbmUtc2hpZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ibG9ja19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrX2Rhc2hfc2l6ZUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJs
b2NrLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ibG9ja19kYXNoX3NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCbG9ja1NpemUsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jsb2NrX2Rh
c2hfc2l6ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiYmxvY2stc2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCbG9jaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2ssIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJi
b3JkZXItYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9ibG9ja1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2Jsb2NrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJib3JkZXItYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0NvbG9yKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9ibG9ja19kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXIt
YmxvY2stY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxv
Y2tDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfY29sb3JT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci1ibG9jay1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmQs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxv
Y2tfZGFzaF9lbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stZW5kIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tf
ZGFzaF9lbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLWVuZCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
ZW5kX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRl
ckJsb2NrRW5kQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfY29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFz
aF9lbmRfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ibG9jay1lbmQtY29sb3Ii
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tF
bmRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfZW5kX2Rhc2hfY29sb3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImJvcmRlci1ibG9jay1lbmQtY29sb3IiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2Vu
ZF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJC
bG9ja0VuZFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2VuZF9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
ZW5kX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stZW5kLXN0eWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrRW5k
U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNo
X2VuZF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXItYmxvY2stZW5kLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRf
ZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxv
Y2tFbmRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9lbmRfZGFzaF93aWR0aCwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX2Vu
ZF9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJsb2NrLWVuZC13aWR0aCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja0VuZFdp
ZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2Jsb2NrX2Rhc2hfZW5kX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9l
bmRfZGFzaF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLWVuZC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3RhcnQpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJv
cmRlci1ibG9jay1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9z
dGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiYm9yZGVyLWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX2NvbG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29sb3Ip
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hf
Y29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stc3RhcnQtY29sb3IiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9j
a19kYXNoX3N0YXJ0X2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0Q29s
b3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9z
dGFydF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJCbG9ja1N0YXJ0U3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF9zdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9j
a19kYXNoX3N0YXJ0X2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2stc3Rh
cnQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfc3R5bGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJCbG9ja1N0YXJ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3N0eWxlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF9zdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0V2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJib3JkZXItYmxvY2stc3RhcnQtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0YXJ0X2Rhc2hfd2lk
dGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCbG9ja1N0YXJ0V2lkdGgsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdGFydF9k
YXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRfZGFzaF93aWR0aFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVy
LWJsb2NrLXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxvY2tfZGFz
aF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ibG9ja19kYXNoX3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJsb2NrLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfYmxvY2tfZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJsb2NrU3R5bGUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYmxv
Y2tfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3N0eWxlU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItYmxvY2st
c3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJCbG9ja1dpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRoLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rh
c2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItYmxvY2std2lkdGgiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19k
YXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tXaWR0aCwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ibG9ja19kYXNoX3dpZHRo
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2Jsb2NrX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1ibG9jay13aWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jv
dHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfYm90dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJvdHRvbSIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Jv
dHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b20sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90
dG9tU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXItYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFz
aF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9ib3R0b21fZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ib3R0b20tY29s
b3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b21fZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX2NvbG9yU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXIt
Ym90dG9tLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c0dldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cykpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYm90dG9tX2Rhc2hfbGVmdF9kYXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9sZWZ0X2Rhc2hfcmFkaXVz
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9k
YXNoX2xlZnRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2JvdHRvbV9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hf
bGVmdF9kYXNoX3JhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNo
X3JpZ2h0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9y
YWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXIt
Ym90dG9tLXJpZ2h0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFz
aF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRl
ci1ib3R0b20tcmlnaHQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0
b21fZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ib3R0b21fZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ib3R0
b20tc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9ib3R0b21fZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3N0eWxl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJi
b3JkZXItYm90dG9tLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfYm90dG9tX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9ib3R0b21f
ZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9ib3R0b21fZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1ib3R0b20t
d2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9ib3R0b21fZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2JvdHRvbV9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2JvdHRvbV9kYXNoX3dpZHRoU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3Jk
ZXItYm90dG9tLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sbGFwc2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9jb2xsYXBzZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9jb2xsYXBzZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImJvcmRlci1jb2xsYXBzZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2NvbGxhcHNlU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyQ29sbGFwc2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfY29sbGFwc2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfY29sbGFwc2VTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1jb2xsYXBz
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJD
b2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItY29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2Nv
bG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXItY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9lbmRfZGFzaF9yYWRpdXNHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckVuZEVuZFJhZGl1cykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfZW5k
X2Rhc2hfZW5kX2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1c0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImJvcmRlci1lbmQtZW5kLXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX2VuZF9kYXNoX3JhZGl1c1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckVuZEVuZFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9lbmRfZGFzaF9yYWRpdXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfZW5kX2Rhc2hfZW5kX2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItZW5kLWVuZC1yYWRp
dXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9lbmRfZGFzaF9zdGFydF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVyRW5kU3RhcnRSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0
YXJ0X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0YXJ0X2Rhc2hfcmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
Ym9yZGVyLWVuZC1zdGFydC1yYWRpdXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9lbmRfZGFzaF9zdGFydF9kYXNoX3JhZGl1c1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlckVuZFN0YXJ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0YXJ0X2Rhc2hfcmFk
aXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2VuZF9kYXNoX3N0YXJ0X2Rhc2hfcmFkaXVzU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItZW5kLXN0
YXJ0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2ltYWdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXIt
aW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbWFnZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2ltYWdlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJib3JkZXItaW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX291dHNldEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lt
YWdlX2Rhc2hfb3V0c2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfb3V0c2V0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWlt
YWdlLW91dHNldCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfb3V0c2V0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VPdXRzZXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfaW1hZ2VfZGFzaF9vdXRzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9vdXRz
ZXRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImJvcmRlci1pbWFnZS1vdXRzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3JlcGVhdEdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdl
X2Rhc2hfcmVwZWF0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWltYWdl
LXJlcGVhdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfcmVwZWF0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VS
ZXBlYXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9yZXBlYXRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci1pbWFnZS1yZXBlYXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NsaWNlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNo
X3NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2ltYWdlX2Rhc2hfc2xpY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItaW1hZ2Utc2xpY2Ui
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9pbWFnZV9kYXNoX3NsaWNlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZSwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFn
ZV9kYXNoX3NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfc2xpY2VTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbWFnZS1z
bGljZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2ltYWdlX2Rhc2hfc291cmNlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF9zb3VyY2UsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2Vf
ZGFzaF9zb3VyY2VHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItaW1hZ2Utc291cmNlIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1h
Z2VfZGFzaF9zb3VyY2VTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNo
X3NvdXJjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbWFnZV9kYXNoX3NvdXJjZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWltYWdlLXNvdXJj
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2ltYWdlX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfd2lkdGgsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF93
aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbWFnZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hf
d2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2ltYWdlX2Rhc2hfd2lkdGgsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW1hZ2VfZGFzaF93aWR0aFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWltYWdlLXdpZHRoIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmUpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbmxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItaW5saW5lIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci1pbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2Nv
bG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2lubGluZV9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWlubGluZS1jb2xvciIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2lubGluZV9kYXNoX2NvbG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lQ29sb3IsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfY29sb3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxp
bmUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUJvcmRlcklubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9k
YXNoX2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rh
c2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rh
c2hfZW5kX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlcklubGluZUVuZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9lbmRfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtZW5k
LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3Jk
ZXJJbmxpbmVFbmRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWlubGluZS1lbmQtY29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9p
bmxpbmVfZGFzaF9lbmRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Qm9yZGVySW5saW5lRW5kU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNo
X3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWlu
bGluZS1lbmQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9lbmRfZGFzaF9zdHlsZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlcklubGluZUVuZFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3N0eWxlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItaW5saW5lLWVuZC1zdHls
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVFbmRXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hf
ZW5kX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJi
b3JkZXItaW5saW5lLWVuZC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX2VuZF9kYXNoX3dpZHRoU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVySW5saW5lRW5kV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lk
dGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfZW5kX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxpbmUt
ZW5kLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFy
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9p
bmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtc3RhcnQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9pbmxpbmVfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGlu
ZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0U2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItaW5saW5l
LXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVySW5saW5lU3RhcnRDb2xvcikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5s
aW5lX2Rhc2hfc3RhcnRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX2NvbG9yR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0
YXJ0X2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydENvbG9yLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGlu
ZV9kYXNoX3N0YXJ0X2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRf
ZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0
X2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklu
bGluZVN0YXJ0U3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hfc3R5bGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
X2Rhc2hfc3RhcnRfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1pbmxpbmUtc3Rh
cnQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVySW5saW5lU3RhcnRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3N0eWxlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1pbmxpbmUtc3RhcnQt
c3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFdpZHRoKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxp
bmVfZGFzaF9zdGFydF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0X2Rhc2hfd2lkdGhHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnRfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0YXJ0V2lkdGgsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5l
X2Rhc2hfc3RhcnRfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdGFydF9k
YXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfc3R5bGVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVN0eWxlKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJvcmRlci1pbmxpbmUtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF9zdHlsZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUJvcmRlcklubGluZVN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGlu
ZV9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJib3JkZXItaW5saW5lLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfaW5saW5lX2Rhc2hfd2lkdGhHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcklubGluZVdpZHRoKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9pbmxpbmVfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJv
cmRlci1pbmxpbmUtd2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9pbmxpbmVfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJv
cmRlcklubGluZVdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2lubGluZV9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2lubGluZV9k
YXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJib3JkZXItaW5saW5lLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVyLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1sZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX2NvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X2xlZnRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3JkZXItbGVm
dC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2xlZnRfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9sZWZ0X2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX2NvbG9yU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItbGVm
dC1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2xlZnRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfc3R5bGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNo
X3N0eWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLWxlZnQtc3R5bGUiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hf
c3R5bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3N0eWxlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Jv
cmRlcl9kYXNoX2xlZnRfZGFzaF9zdHlsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLWxlZnQtc3R5bGUiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hf
d2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfbGVmdF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX2xlZnRfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImJvcmRlci1sZWZ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfbGVmdF9kYXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JvcmRlcl9kYXNoX2xlZnRfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9sZWZ0X2Rhc2hfd2lk
dGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImJvcmRlci1sZWZ0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJib3JkZXItcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmFkaXVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yYWRpdXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1yYWRpdXMiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3Jp
Z2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3JpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJSaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ib3JkZXJfZGFzaF9yaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLXJpZ2h0Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfcmlnaHRfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX2NvbG9y
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVyLXJpZ2h0LWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xv
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF9jb2xvciwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9yaWdodF9kYXNoX2NvbG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItcmlnaHQtY29sb3IiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNo
X3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJib3JkZXItcmlnaHQtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3JkZXJfZGFzaF9yaWdodF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0
X2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImJvcmRlci1yaWdodC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3JpZ2h0X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1y
aWdodC13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGhTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRl
cl9kYXNoX3JpZ2h0X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfcmlnaHRfZGFzaF93aWR0aFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9y
ZGVyLXJpZ2h0LXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfc3BhY2luZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyU3BhY2luZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3BhY2luZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFjaW5nR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiYm9yZGVyLXNwYWNpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zcGFjaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3Bh
Y2luZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9zcGFjaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3NwYWNpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1zcGFjaW5nIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3Rh
cnRfZGFzaF9lbmRfZGFzaF9yYWRpdXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJvcmRlclN0YXJ0RW5kUmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2VuZF9kYXNoX3Jh
ZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF9zdGFydF9kYXNoX2VuZF9kYXNoX3JhZGl1c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci1zdGFy
dC1lbmQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9lbmRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlCb3JkZXJTdGFydEVuZFJhZGl1cywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX2VuZF9kYXNoX3JhZGl1cywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF9zdGFydF9kYXNoX2VuZF9kYXNoX3JhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLXN0YXJ0LWVuZC1yYWRpdXMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJf
ZGFzaF9zdGFydF9kYXNoX3N0YXJ0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlCb3JkZXJTdGFydFN0YXJ0UmFkaXVzKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNo
X3N0YXJ0X2Rhc2hfcmFkaXVzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JvcmRlcl9kYXNoX3N0YXJ0X2Rhc2hfc3RhcnRfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9zdGFydF9kYXNo
X3JhZGl1c1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0YXJ0U3RhcnRSYWRpdXMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3RhcnRfZGFzaF9z
dGFydF9kYXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdGFydF9kYXNoX3N0YXJ0X2Rhc2hfcmFk
aXVzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJib3JkZXItc3RhcnQtc3RhcnQtcmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF9zdHlsZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImJvcmRlci1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyU3R5
bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci1zdHlsZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyVG9wKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3AsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiYm9yZGVyLXRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRv
cCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF90b3AsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfY29sb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFz
aF90b3BfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF90b3BfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci10b3At
Y29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF90b3BfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3Rv
cF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2NvbG9yU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItdG9wLWNvbG9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVy
X2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9k
YXNoX3JhZGl1cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF90b3BfZGFzaF9sZWZ0X2Rhc2hfcmFkaXVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm9yZGVy
LXRvcC1sZWZ0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXNTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX2xlZnRfZGFzaF9yYWRpdXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfdG9wX2Rhc2hfbGVmdF9kYXNoX3JhZGl1c1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9k
YXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRf
ZGFzaF9yYWRpdXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9y
ZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3Jk
ZXItdG9wLXJpZ2h0LXJhZGl1cyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3JpZ2h0X2Rhc2hfcmFkaXVzU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXMs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfcmlnaHRfZGFzaF9yYWRpdXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJvcmRlci10b3AtcmlnaHQt
cmFkaXVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Ym9yZGVyX2Rhc2hfdG9wX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9zdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9zdHls
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci10b3Atc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90b3BfZGFzaF9zdHlsZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNo
X3RvcF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJib3JkZXItdG9wLXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfdG9wX2Rhc2hfd2lkdGhHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3JkZXJfZGFzaF90
b3BfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF90b3BfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci10b3Atd2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3Jk
ZXJfZGFzaF90b3BfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9k
YXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3RvcF9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3JkZXItdG9wLXdpZHRoIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rh
c2hfd2lkdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJvcmRlcldpZHRo
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9i
b3JkZXJfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3JkZXJfZGFzaF93aWR0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJvcmRlci13aWR0aCIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JvcmRlcl9kYXNoX3dp
ZHRoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm9yZGVyX2Rhc2hfd2lkdGhT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJv
cmRlci13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2JveF9kYXNoX3NoYWRvd0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Qm94U2hhZG93KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ib3hfZGFzaF9zaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fYm94X2Rhc2hfc2hhZG93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYm94LXNoYWRvdyIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JveF9kYXNoX3No
YWRvd1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUJveFNoYWRvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ib3hfZGFzaF9zaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2hhZG93U2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJib3gtc2hh
ZG93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fYm94
X2Rhc2hfc2l6aW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCb3hTaXpp
bmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JveF9kYXNoX3NpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ib3hfZGFzaF9zaXppbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJib3gtc2l6aW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYm94X2Rhc2hfc2l6aW5nU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Qm94U2l6aW5nLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JveF9kYXNoX3NpemluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ib3hfZGFzaF9zaXppbmdTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJveC1zaXppbmciKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNo
X2FmdGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0FmdGVyKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVh
a19kYXNoX2FmdGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Jy
ZWFrX2Rhc2hfYWZ0ZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJicmVhay1hZnRlciIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2JyZWFrX2Rhc2hfYWZ0ZXJTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlCcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2JyZWFrX2Rhc2hfYWZ0ZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9hZnRlclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYnJlYWstYWZ0ZXIi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19k
YXNoX2JlZm9yZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QnJlYWtCZWZv
cmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2JyZWFrX2Rhc2hfYmVmb3JlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX2JyZWFrX2Rhc2hfYmVmb3JlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiYnJlYWstYmVmb3JlIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9i
ZWZvcmVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlCcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2JlZm9y
ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
YnJlYWstYmVmb3JlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fYnJlYWtfZGFzaF9pbnNpZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2luc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9icmVha19kYXNoX2luc2lkZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImJyZWFr
LWluc2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2JyZWFrX2Rhc2hfaW5zaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5QnJlYWtJbnNpZGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJlYWtfZGFzaF9pbnNpZGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fYnJl
YWtfZGFzaF9pbnNpZGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImJyZWFrLWluc2lkZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkX2Rhc2hfcmVuZGVyaW5nR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlCdWZmZXJlZFJlbmRlcmluZykpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVyZWRfZGFzaF9yZW5k
ZXJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fYnVmZmVyZWRf
ZGFzaF9yZW5kZXJpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJidWZmZXJlZC1yZW5kZXJpbmciKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9idWZmZXJlZF9kYXNo
X3JlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUJ1ZmZlcmVkUmVuZGVyaW5nLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2J1ZmZlcmVkX2Rhc2hfcmVuZGVyaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2J1ZmZlcmVkX2Rhc2hfcmVuZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJidWZmZXJlZC1yZW5kZXJpbmciKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uX2Rhc2hfc2lkZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRpb25fZGFzaF9z
aWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcHRpb25fZGFz
aF9zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY2FwdGlvbi1zaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY2FwdGlvbl9kYXNoX3NpZGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDYXB0aW9uU2lkZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jYXB0aW9uX2Rhc2hfc2lkZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXB0aW9uX2Rhc2hfc2lkZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY2FwdGlvbi1zaWRlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2FyZXRfZGFz
aF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2FyZXRDb2xvcikp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2Fy
ZXRfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9j
YXJldF9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY2FyZXQtY29sb3IiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jYXJldF9kYXNoX2NvbG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5Q2FyZXRDb2xvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jYXJldF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NhcmV0X2Rhc2hfY29sb3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNhcmV0LWNvbG9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcF9k
YXNoX3BhdGhHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBQYXRoKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlw
X2Rhc2hfcGF0aCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jbGlw
X2Rhc2hfcGF0aEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNsaXAtcGF0aCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9wYXRoU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5Q2xpcFBhdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y2xpcF9kYXNoX3BhdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY2xpcF9kYXNoX3BhdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNsaXAtcGF0aCIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDbGlwUnVsZSkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcF9kYXNoX3J1bGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY2xpcF9kYXNoX3J1bGVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJjbGlwLXJ1bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jbGlwX2Rhc2hfcnVsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNsaXBSdWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NsaXBfZGFzaF9ydWxlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NsaXBfZGFzaF9ydWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJjbGlwLXJ1bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX2ludGVycG9sYXRpb25HZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbikpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRlcnBv
bGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rh
c2hfaW50ZXJwb2xhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9yLWludGVycG9sYXRpb24iKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNo
X2ludGVycG9sYXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb24sIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9pbnRlcnBvbGF0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sb3ItaW50ZXJwb2xhdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50
ZXJwb2xhdGlvbl9kYXNoX2ZpbHRlcnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9kYXNo
X2ZpbHRlcnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3Jf
ZGFzaF9pbnRlcnBvbGF0aW9uX2Rhc2hfZmlsdGVyc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbG9yLWlu
dGVycG9sYXRpb24tZmlsdGVycyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9kYXNoX2ZpbHRlcnNTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfaW50ZXJwb2xhdGlvbl9kYXNoX2ZpbHRl
cnMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9pbnRlcnBvbGF0aW9uX2Rhc2hfZmlsdGVyc1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sb3ItaW50ZXJwb2xh
dGlvbi1maWx0ZXJzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9wcm9maWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDb2xvclByb2ZpbGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Byb2ZpbGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJj
b2xvci1wcm9maWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9wcm9maWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JQcm9maWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfcHJvZmls
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2xvcl9kYXNoX3Byb2ZpbGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9yLXByb2ZpbGUiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3JlbmRlcmluZ0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmcpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rhc2hfcmVu
ZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbG9yX2Rh
c2hfcmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiY29sb3ItcmVuZGVyaW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9yZW5kZXJp
bmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3JlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3Jl
bmRlcmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiY29sb3ItcmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9zY2hlbWVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbG9yU2NoZW1lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3NjaGVtZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2xvcl9kYXNoX3NjaGVtZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImNvbG9yLXNjaGVtZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2NvbG9yX2Rhc2hfc2NoZW1lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sb3JTY2hlbWUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sb3JfZGFzaF9zY2hl
bWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sb3JfZGFzaF9zY2hlbWVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbG9yLXNjaGVtZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2NvdW50R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5Db3VudCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfY291bnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4tY291bnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9jb3VudFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNv
bHVtbkNvdW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Nv
bHVtbl9kYXNoX2NvdW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2NvdW50U2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tY291bnQiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9maWxs
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1w
bC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5GaWxsKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFz
aF9maWxsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9k
YXNoX2ZpbGxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4tZmlsbCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2ZpbGxTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlDb2x1bW5GaWxsLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2NvbHVtbl9kYXNoX2ZpbGwsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfZmlsbFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sdW1uLWZpbGwiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9n
YXBHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rh
c2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9k
YXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbHVtbi1nYXAiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9nYXBTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5HYXAsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX2dhcFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29sdW1uLWdhcCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1
bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hf
cnVsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbHVtbi1ydWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUNvbHVtblJ1bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Y29sdW1uX2Rhc2hfcnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tcnVsZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVf
ZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVs
ZUNvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiY29sdW1uLXJ1bGUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5SdWxlQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fY29sdW1uX2Rhc2hfcnVsZV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFz
aF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiY29sdW1uLXJ1bGUtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVTdHlsZSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfcnVsZV9k
YXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVt
bl9kYXNoX3J1bGVfZGFzaF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvbHVtbi1ydWxlLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
X2Rhc2hfcnVsZV9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29sdW1uUnVsZVN0eWxlLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVf
ZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfc3R5bGVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbHVtbi1ydWxlLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1u
X2Rhc2hfcnVsZV9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlDb2x1bW5SdWxlV2lkdGgpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF93aWR0aCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGhH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4tcnVsZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3J1bGVfZGFzaF93aWR0aFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUNvbHVtblJ1bGVXaWR0aCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9ydWxlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rh
c2hfcnVsZV9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tcnVsZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3NwYW5HZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNwYW4pKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3NwYW4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfc3BhbkdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImNvbHVtbi1zcGFuIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfc3BhblNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtblNw
YW4sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rh
c2hfc3BhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF9zcGFuU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4tc3BhbiIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3dpZHRoR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb2x1bW5XaWR0aCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfd2lkdGgs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fY29sdW1uX2Rhc2hfd2lk
dGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJjb2x1bW4td2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb2x1bW5fZGFzaF93aWR0aFNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUNvbHVtbldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2NvbHVtbl9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvbHVtbl9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb2x1bW4td2lkdGgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVyX2Rhc2hf
aW5jcmVtZW50R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb3VudGVySW5j
cmVtZW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9jb3VudGVyX2Rhc2hfaW5jcmVtZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2NvdW50ZXJfZGFzaF9pbmNyZW1lbnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJjb3Vu
dGVyLWluY3JlbWVudCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJfZGFzaF9pbmNyZW1lbnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6
OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb3VudGVySW5jcmVt
ZW50LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJf
ZGFzaF9pbmNyZW1lbnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fY291bnRlcl9kYXNoX2luY3JlbWVudFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY291bnRlci1pbmNyZW1lbnQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVy
X2Rhc2hfcmVzZXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvdW50ZXJS
ZXNldCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fY291bnRlcl9kYXNoX3Jlc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2NvdW50ZXJfZGFzaF9yZXNldEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImNvdW50ZXItcmVzZXQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9jb3VudGVy
X2Rhc2hfcmVzZXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fY291bnRlcl9kYXNoX3Jlc2V0LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2NvdW50ZXJf
ZGFzaF9yZXNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiY291bnRlci1yZXNldCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rhc2hfYmFzZWxpbmVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2RvbWluYW50X2Rhc2hfYmFzZWxpbmUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9i
YXNlbGluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImRvbWluYW50LWJhc2VsaW5lIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9iYXNlbGlu
ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZG9taW5hbnRfZGFzaF9iYXNlbGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9kb21pbmFudF9k
YXNoX2Jhc2VsaW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJkb21pbmFudC1iYXNlbGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5X2Rhc2hfY2VsbHNHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VtcHR5X2Rhc2hfY2VsbHMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlfZGFzaF9jZWxsc0dldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgImVtcHR5LWNlbGxzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZW1wdHlfZGFzaF9jZWxsc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW1wdHlfZGFzaF9jZWxs
cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9lbXB0eV9kYXNoX2NlbGxzU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJlbXB0eS1jZWxscyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZV9kYXNoX2JhY2tncm91bmRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91bmQpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VuYWJsZV9kYXNoX2Jh
Y2tncm91bmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxl
X2Rhc2hfYmFja2dyb3VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVuYWJsZS1iYWNrZ3JvdW5kIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlX2Rhc2hf
YmFja2dyb3VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91bmQsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZW5hYmxlX2Rhc2hfYmFja2dyb3VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9l
bmFibGVfZGFzaF9iYWNrZ3JvdW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJlbmFibGUtYmFja2dyb3VuZCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9vcGFjaXR5R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxsT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX29wYWNpdHks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX29wYWNp
dHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJmaWxsLW9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfb3BhY2l0eVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUZpbGxPcGFjaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZpbGxfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9vcGFjaXR5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmaWxsLW9wYWNpdHkiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rhc2hfcnVs
ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmlsbFJ1bGUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9y
dWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZpbGxfZGFzaF9y
dWxlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiZmlsbC1ydWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmlsbF9kYXNoX3J1bGVTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGaWxs
UnVsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9maWxsX2Rh
c2hfcnVsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9maWxsX2Rhc2hfcnVsZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmlsbC1ydWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2Jhc2lzR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4QmFzaXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9iYXNpcywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfYmFzaXNHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJmbGV4LWJhc2lzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZmxleF9kYXNoX2Jhc2lzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEJhc2lzLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9iYXNpcywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfYmFzaXNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImZsZXgtYmFzaXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZGlyZWN0aW9uR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbGV4RGlyZWN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZGlyZWN0aW9uLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb25H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJmbGV4LWRpcmVjdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb25TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbGV4RGlyZWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZsZXhfZGFzaF9kaXJlY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2RpcmVjdGlvblNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleC1kaXJlY3Rp
b24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4
X2Rhc2hfZmxvd0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEZsb3cp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2Zs
ZXhfZGFzaF9mbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Zs
ZXhfZGFzaF9mbG93R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZmxleC1mbG93Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2Zsb3dTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlGbGV4RmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfZmxvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZmxvd1NldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxleC1mbG93Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2dyb3dHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhHcm93KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZ3JvdywgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mbGV4X2Rhc2hfZ3Jvd0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImZsZXgtZ3JvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9ncm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5RmxleEdyb3csIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX2dyb3cs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZmxleF9kYXNoX2dyb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImZsZXgtZ3JvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmtHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUZsZXhTaHJpbmspKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF9zaHJpbmssIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3Nocmlua0dldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgImZsZXgtc2hyaW5rIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZmxleF9kYXNoX3Nocmlua1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhTaHJpbmssIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3Nocmluaywg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfc2hyaW5rU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJmbGV4LXNocmluayIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlGbGV4V3JhcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXAsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZmxleF9kYXNoX3dyYXBHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
bGV4LXdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mbGV4X2Rhc2hfd3JhcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZsZXhXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF93cmFwLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZsZXhfZGFzaF93
cmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJmbGV4LXdyYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mbG9vZF9kYXNoX2NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGbG9vZENvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mbG9vZF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmbG9vZC1jb2xv
ciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29k
X2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9vZENvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9j
b2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZmxvb2QtY29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mbG9vZF9kYXNoX29wYWNpdHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUZsb29kT3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2Zsb29kX2Rhc2hfb3BhY2l0eUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImZsb29kLW9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mbG9vZF9kYXNoX29wYWNpdHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNh
bGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4g
aW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHksIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZmxvb2RfZGFzaF9vcGFj
aXR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2Zsb29kX2Rhc2hfb3BhY2l0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmxvb2Qtb3BhY2l0eSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9kaXNwbGF5R2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250RGlzcGxheSkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3BsYXks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2Rpc3Bs
YXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJmb250LWRpc3BsYXkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZGlzcGxheVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUZvbnREaXNwbGF5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRfZGFzaF9kaXNwbGF5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9kaXNwbGF5U2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250LWRpc3BsYXkiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmFt
aWx5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250RmFtaWx5KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfZmFtaWx5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRf
ZGFzaF9mYW1pbHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250LWZhbWlseSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mYW1pbHlTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlGb250RmFtaWx5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF9mYW1pbHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2ZhbWlseVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udC1mYW1pbHkiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hf
ZmVhdHVyZV9kYXNoX3NldHRpbmdzR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlGb250RmVhdHVyZVNldHRpbmdzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVhdHVyZV9kYXNoX3NldHRpbmdzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mZWF0dXJlX2Rh
c2hfc2V0dGluZ3NHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJmb250LWZlYXR1cmUtc2V0dGluZ3MiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVh
dHVyZV9kYXNoX3NldHRpbmdzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0aW5ncywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfZmVhdHVy
ZV9kYXNoX3NldHRpbmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9mZWF0dXJlX2Rhc2hfc2V0dGluZ3NTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtZmVh
dHVyZS1zZXR0aW5ncyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF9rZXJuaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXZWJraXRGb250S2VybmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2tlcm5pbmcsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX2tlcm5pbmdHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJmb250LWtlcm5pbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9mb250X2Rhc2hfa2VybmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5n
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9r
ZXJuaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF9rZXJuaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb250LWtlcm5pbmciKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfb3B0aWNhbF9kYXNoX3Np
emluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udE9wdGljYWxTaXpp
bmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2ZvbnRfZGFzaF9vcHRpY2FsX2Rhc2hfc2l6aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9vcHRpY2FsX2Rhc2hfc2l6aW5nR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiZm9udC1vcHRpY2FsLXNpemluZyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9vcHRpY2FsX2Rhc2hfc2l6aW5nU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Rm9udE9wdGljYWxTaXppbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udF9kYXNoX29wdGljYWxfZGFzaF9zaXppbmcsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX29w
dGljYWxfZGFzaF9zaXppbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImZvbnQtb3B0aWNhbC1zaXppbmciKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc2l6ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFNpemUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zaXplR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiZm9udC1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3NpemVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250U2l6ZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc2l6ZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
X2Rhc2hfc2l6ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZm9udC1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZm9udF9kYXNoX3N0cmV0Y2hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUZvbnRTdHJldGNoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3RyZXRjaEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImZvbnQtc3RyZXRjaCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF9zdHJldGNoU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N0cmV0Y2gs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3N0cmV0Y2hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtc3RyZXRjaCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zdHlsZUdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N0eWxlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiZm9udC1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3R5bGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJmb250LXN0eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpc0dldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Rm9udFN5bnRoZXNpcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3N5bnRoZXNpcywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3ludGhlc2lzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiZm9udC1zeW50aGVzaXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfc3ludGhlc2lzU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Rm9udFN5bnRoZXNpcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250X2Rhc2hfc3ludGhlc2lzLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF9zeW50aGVzaXNTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtc3ludGhlc2lz
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9k
YXNoX3ZhcmlhbnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250X2Rhc2hfdmFyaWFudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9mb250X2Rhc2hfdmFyaWFudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnQtdmFyaWFudCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92
YXJpYW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
ICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnQsIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3Zhcmlh
bnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImZvbnQtdmFyaWFudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfYWx0ZXJuYXRlc0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRBbHRlcm5hdGVzKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFu
dF9kYXNoX2FsdGVybmF0ZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5hdGVzR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9u
dC12YXJpYW50LWFsdGVybmF0ZXMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2FsdGVybmF0ZXNTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlGb250VmFyaWFudEFsdGVybmF0ZXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9hbHRlcm5hdGVzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRf
ZGFzaF92YXJpYW50X2Rhc2hfYWx0ZXJuYXRlc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm9udC12YXJpYW50LWFsdGVybmF0ZXMiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFy
aWFudF9kYXNoX2NhcHNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50Q2FwcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9jYXBzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfY2Fwc0dldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgImZvbnQtdmFyaWFudC1jYXBzIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9jYXBzU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5Rm9udFZhcmlhbnRDYXBzLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfY2FwcywgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFu
dF9kYXNoX2NhcHNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImZvbnQtdmFyaWFudC1jYXBzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9lYXN0X2Rhc2hfYXNp
YW5HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50RWFzdEFz
aWFuKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2Vhc3RfZGFzaF9hc2lhbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2Vhc3RfZGFz
aF9hc2lhbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3Zhcmlh
bnRfZGFzaF9lYXN0X2Rhc2hfYXNpYW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlGb250VmFyaWFudEVhc3RBc2lh
biwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hf
dmFyaWFudF9kYXNoX2Vhc3RfZGFzaF9hc2lhbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2Vh
c3RfZGFzaF9hc2lhblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZm9udC12YXJpYW50LWVhc3QtYXNpYW4iKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX2xpZ2F0
dXJlc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdh
dHVyZXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfbGlnYXR1cmVzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfbGlnYXR1cmVzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiZm9udC12YXJpYW50LWxpZ2F0dXJlcyIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYW50X2Rhc2hfbGln
YXR1cmVzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9saWdh
dHVyZXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9saWdhdHVyZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtdmFyaWFudC1saWdh
dHVyZXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9m
b250X2Rhc2hfdmFyaWFudF9kYXNoX251bWVyaWNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9udW1lcmlj
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJp
YW50X2Rhc2hfbnVtZXJpY0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZvbnQtdmFyaWFudC1udW1lcmljIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNo
X3ZhcmlhbnRfZGFzaF9udW1lcmljU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnROdW1lcmljLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJp
YW50X2Rhc2hfbnVtZXJpYywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNoX251bWVyaWNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtdmFy
aWFudC1udW1lcmljIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9wb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRQb3NpdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhbnRfZGFz
aF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250
X2Rhc2hfdmFyaWFudF9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udC12YXJpYW50
LXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50UG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3ZhcmlhbnRfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWFudF9kYXNo
X3Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJmb250LXZhcmlhbnQtcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWF0aW9uX2Rhc2hfc2V0dGluZ3NH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUZvbnRWYXJpYXRpb25TZXR0aW5n
cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
Zm9udF9kYXNoX3ZhcmlhdGlvbl9kYXNoX3NldHRpbmdzLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRpb25fZGFzaF9zZXR0aW5nc0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgImZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZm9udF9kYXNoX3ZhcmlhdGlvbl9kYXNoX3Nl
dHRpbmdzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFZhcmlhdGlvblNldHRpbmdzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF92YXJpYXRpb25fZGFzaF9z
ZXR0aW5ncywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250X2Rhc2hfdmFyaWF0aW9uX2Rhc2hfc2V0dGluZ3NTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZvbnQtdmFyaWF0aW9u
LXNldHRpbmdzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fZm9udF9kYXNoX3dlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
Rm9udFdlaWdodCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZm9udF9kYXNoX3dlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9mb250X2Rhc2hfd2VpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZm9udC13ZWlnaHQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rh
c2hfd2VpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9mb250X2Rhc2hfd2VpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ZvbnRfZGFzaF93ZWln
aHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImZvbnQtd2VpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlvbl9kYXNoX2hvcml6b250YWxHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9k
YXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfaG9yaXpvbnRhbEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0
aW9uX2Rhc2hfaG9yaXpvbnRhbFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9u
dGFsLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rh
c2hfb3JpZW50YXRpb25fZGFzaF9ob3Jpem9udGFsLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rhc2hfb3JpZW50YXRpb25f
ZGFzaF9ob3Jpem9udGFsU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFzaF9vcmllbnRhdGlv
bl9kYXNoX3ZlcnRpY2FsR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHbHlw
aE9yaWVudGF0aW9uVmVydGljYWwpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2dseXBoX2Rhc2hfb3JpZW50YXRpb25fZGFzaF92ZXJ0aWNhbCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9nbHlwaF9kYXNoX29yaWVu
dGF0aW9uX2Rhc2hfdmVydGljYWxHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJnbHlwaC1vcmllbnRhdGlvbi12
ZXJ0aWNhbCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2dseXBoX2Rhc2hfb3JpZW50YXRpb25fZGFzaF92ZXJ0aWNhbFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdseXBo
T3JpZW50YXRpb25WZXJ0aWNhbCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9nbHlwaF9kYXNoX29yaWVudGF0aW9uX2Rhc2hfdmVydGljYWwsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ2x5cGhfZGFz
aF9vcmllbnRhdGlvbl9kYXNoX3ZlcnRpY2FsU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9h
cmVhR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQXJlYSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X2FyZWEsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X2FyZWFHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLWFyZWEiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXJlYVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdy
aWRBcmVhLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9hcmVhLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hcmVhU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkLWFyZWEiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2NvbHVtbnNH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRBdXRvQ29sdW1ucykpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9k
YXNoX2F1dG9fZGFzaF9jb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfY29sdW1uc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQt
YXV0by1jb2x1bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9jb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZEF1dG9D
b2x1bW5zLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9hdXRvX2Rhc2hfY29sdW1ucywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2NvbHVtbnNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQt
YXV0by1jb2x1bW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9mbG93R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQXV0b0Zsb3cpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfZmxvdywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3dH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJncmlkLWF1dG8tZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfZmxvd1NldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUdyaWRBdXRvRmxvdywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX2Zsb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9m
bG93U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJncmlkLWF1dG8tZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rhc2hfcm93c0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5R3JpZEF1dG9Sb3dzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX3Jvd3MsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9y
b3dzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZC1hdXRvLXJvd3MiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfYXV0b19kYXNoX3Jvd3NTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQXV0b1Jvd3MsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZ3JpZF9kYXNoX2F1dG9fZGFzaF9yb3dzLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9hdXRvX2Rh
c2hfcm93c1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiZ3JpZC1hdXRvLXJvd3MiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlHcmlkQ29sdW1uKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5HZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJn
cmlkLWNvbHVtbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRfZGFzaF9jb2x1bW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29sdW1uLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW4sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZF9kYXNoX2NvbHVtblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiZ3JpZC1jb2x1bW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfZW5kR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkQ29sdW1uRW5kKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hf
ZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9j
b2x1bW5fZGFzaF9lbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLWNvbHVtbi1lbmQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1u
X2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZENvbHVtbkVuZCwgV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfZW5kLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRfZGFzaF9jb2x1bW5fZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtY29sdW1uLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9nYXBH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2Nv
bHVtbl9kYXNoX2dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkX2Rhc2hfY29sdW1uX2Rhc2hfZ2FwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZC1jb2x1bW4tZ2Fw
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9k
YXNoX2NvbHVtbl9kYXNoX2dhcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbHVtbkdhcCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfZ2Fw
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9nYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtY29sdW1uLWdhcCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFz
aF9zdGFydEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZENvbHVtblN0
YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX3N0YXJ0R2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiZ3JpZC1jb2x1bW4tc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfY29sdW1uX2Rhc2hfc3RhcnRTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlH
cmlkQ29sdW1uU3RhcnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZ3JpZF9kYXNoX2NvbHVtbl9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9jb2x1bW5fZGFzaF9z
dGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZ3JpZC1jb2x1bW4tc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlHYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRfZGFzaF9nYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtZ2FwIik7Cn0KCnN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX2dhcFNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUdhcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9ncmlkX2Rhc2hfZ2FwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9nYXBTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtZ2FwIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFJvdykpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3JvdywgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiZ3JpZC1yb3ciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFJvdywgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93LCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9yb3dTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImdyaWQtcm93Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5R3JpZFJvd0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfZW5kR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiZ3JpZC1yb3ctZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2VuZFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdy
aWRSb3dFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3Jp
ZF9kYXNoX3Jvd19kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfZW5kU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJncmlkLXJvdy1lbmQi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rh
c2hfcm93X2Rhc2hfZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSb3dH
YXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X2dyaWRfZGFzaF9yb3dfZGFzaF9nYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2dhcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtcm93
LWdhcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dy
aWRfZGFzaF9yb3dfZGFzaF9nYXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlSb3dHYXAsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19kYXNoX2dhcCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkX2Rhc2hfcm93X2Rhc2hfZ2FwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJncmlkLXJvdy1nYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfcm93X2Rhc2hfc3RhcnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRSb3dTdGFydCkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jvd19k
YXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRf
ZGFzaF9yb3dfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtcm93LXN0YXJ0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3Jv
d19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFJvd1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF9yb3dfZGFzaF9zdGFydCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9n
cmlkX2Rhc2hfcm93X2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtcm93LXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGUpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVt
cGxhdGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLXRlbXBsYXRlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5R3JpZFRlbXBsYXRlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtdGVtcGxh
dGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlk
X2Rhc2hfdGVtcGxhdGVfZGFzaF9hcmVhc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX2FyZWFzLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9k
YXNoX2FyZWFzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZ3JpZC10ZW1wbGF0ZS1hcmVhcyIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX2FyZWFzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hf
YXJlYXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfYXJlYXNTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQtdGVtcGxhdGUtYXJlYXMi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rh
c2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5zR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlHcmlkVGVtcGxhdGVDb2x1bW5zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVtcGxhdGVfZGFzaF9jb2x1bW5zLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX2NvbHVtbnNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hf
dGVtcGxhdGVfZGFzaF9jb2x1bW5zU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9ncmlkX2Rhc2hfdGVt
cGxhdGVfZGFzaF9jb2x1bW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX2NvbHVtbnNTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImdyaWQt
dGVtcGxhdGUtY29sdW1ucyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNoX3Jvd3NHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3MpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0ZV9kYXNo
X3Jvd3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNo
X3RlbXBsYXRlX2Rhc2hfcm93c0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImdyaWQtdGVtcGxhdGUtcm93cyIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFz
aF90ZW1wbGF0ZV9kYXNoX3Jvd3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dzLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2dyaWRfZGFzaF90ZW1wbGF0
ZV9kYXNoX3Jvd3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fZ3JpZF9kYXNoX3RlbXBsYXRlX2Rhc2hfcm93c1NldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZ3JpZC10ZW1wbGF0ZS1y
b3dzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25faGFu
Z2luZ19kYXNoX3B1bmN0dWF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlIYW5naW5nUHVuY3R1YXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2hhbmdpbmdfZGFzaF9wdW5jdHVhdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nX2Rhc2hfcHVuY3R1YXRpb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJoYW5naW5nLXB1bmN0dWF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faGFuZ2luZ19kYXNoX3B1bmN0dWF0aW9uU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5SGFuZ2luZ1B1bmN0dWF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2hhbmdpbmdfZGFzaF9wdW5jdHVhdGlvbiwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9oYW5naW5nX2Rhc2hf
cHVuY3R1YXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImhhbmdpbmctcHVuY3R1YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX29yaWVudGF0aW9uR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX29yaWVu
dGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rh
c2hfb3JpZW50YXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbWFnZS1vcmllbnRhdGlvbiIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfb3Jp
ZW50YXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3Rh
Y2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
Y29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbWFnZU9yaWVudGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfb3JpZW50YXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1h
Z2VfZGFzaF9vcmllbnRhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiaW1hZ2Utb3JpZW50YXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3JlbmRlcmluZ0dldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rhc2hfcmVu
ZGVyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2ltYWdlX2Rh
c2hfcmVuZGVyaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW1hZ2UtcmVuZGVyaW5nIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW1hZ2VfZGFzaF9yZW5kZXJp
bmdTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3JlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbWFnZV9kYXNoX3Jl
bmRlcmluZ1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiaW1hZ2UtcmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25faW5saW5lX2Rhc2hfc2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SW5saW5lU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25faW5saW5lX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVfZGFzaF9zaXplR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
aW5saW5lLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9pbmxpbmVfZGFzaF9zaXplU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5saW5lU2l6ZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbmxpbmVfZGFzaF9zaXplLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2lu
bGluZV9kYXNoX3NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImlubGluZS1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SW5zZXRCbG9jaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9jaywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiaW5zZXQtYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXRCbG9jaywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2luc2V0X2Rhc2hfYmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImluc2V0LWJsb2NrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXRCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19k
YXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9k
YXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiaW5zZXQtYmxvY2stZW5kIik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9i
bG9ja19kYXNoX2VuZFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0QmxvY2tFbmQsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX2VuZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbnNldC1ibG9jay1lbmQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUluc2V0QmxvY2tTdGFy
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
aW5zZXRfZGFzaF9ibG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Imluc2V0LWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRfZGFzaF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5z
ZXRCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2luc2V0X2Rhc2hfYmxvY2tfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2Jsb2NrX2Rhc2hfc3Rh
cnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Imluc2V0LWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUluc2V0SW5saW5lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGluZUdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
Imluc2V0LWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SW5zZXRJbmxpbmUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25faW5zZXRfZGFzaF9pbmxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImluc2V0LWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfZW5kR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElubGluZUVuZCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9p
bmxpbmVfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
aW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJpbnNldC1pbmxpbmUt
ZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRfZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElubGluZUVuZCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGlu
ZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9pbnNldF9kYXNoX2lubGluZV9kYXNoX2VuZFNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXQtaW5saW5lLWVuZCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUluc2V0SW5saW5lU3RhcnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25faW5zZXRfZGFzaF9pbmxpbmVfZGFzaF9zdGFy
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgImluc2V0LWlubGluZS1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfc3Rh
cnRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlJbnNldElubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2luc2V0X2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25faW5z
ZXRfZGFzaF9pbmxpbmVfZGFzaF9zdGFydFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiaW5zZXQtaW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2NvbnRlbnRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5
X2Rhc2hfY29udGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfY29udGVudEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImp1c3RpZnktY29udGVudCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFz
aF9jb250ZW50U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2NvbnRlbnQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlm
eV9kYXNoX2NvbnRlbnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImp1c3RpZnktY29udGVudCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9pdGVtc0dldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5SnVzdGlmeUl0ZW1zKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0aWZ5X2Rhc2hfaXRlbXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2l0ZW1zR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAianVzdGlmeS1pdGVtcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9pdGVtc1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1
c3RpZnlJdGVtcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfaXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX2l0ZW1zU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJqdXN0aWZ5LWl0ZW1zIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNo
X3NlbGZHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUp1c3RpZnlTZWxmKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9qdXN0
aWZ5X2Rhc2hfc2VsZiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9q
dXN0aWZ5X2Rhc2hfc2VsZkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImp1c3RpZnktc2VsZiIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2p1c3RpZnlfZGFzaF9zZWxm
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SnVzdGlmeVNlbGYsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fanVzdGlmeV9kYXNoX3NlbGZTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImp1c3Rp
Znktc2VsZiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X2xldHRlcl9kYXNoX3NwYWNpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eUxldHRlclNwYWNpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX2xldHRlcl9kYXNoX3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyX2Rhc2hfc3BhY2luZ0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxl
dHRlci1zcGFjaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbGV0dGVyX2Rhc2hfc3BhY2luZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2Fs
bChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBp
bXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGV0dGVyX2Rhc2hfc3Bh
Y2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9sZXR0ZXJfZGFzaF9zcGFjaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJsZXR0ZXItc3BhY2luZyIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0aW5nX2Rhc2hfY29sb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3IpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpZ2h0aW5nX2Rh
c2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRp
bmdfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImxpZ2h0aW5nLWNvbG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdfZGFzaF9jb2xv
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbGlnaHRpbmdfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saWdodGluZ19kYXNoX2Nv
bG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJsaWdodGluZy1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpbmVfZGFzaF9icmVha0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGluZUJyZWFrKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGluZS1icmVh
ayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVf
ZGFzaF9icmVha1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGluZV9kYXNoX2JyZWFr
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJs
aW5lLWJyZWFrIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbGluZV9kYXNoX2hlaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TGluZUhlaWdodCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbGluZV9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saW5lX2Rhc2hfaGVpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGluZS1oZWlnaHQi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rh
c2hfaGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGluZUhlaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saW5lX2Rhc2hfaGVpZ2h0LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpbmVfZGFzaF9oZWln
aHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImxpbmUtaGVpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fbGlzdF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlMaXN0U3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJsaXN0LXN0eWxlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNo
X3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpc3Qt
c3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9s
aXN0X2Rhc2hfc3R5bGVfZGFzaF9pbWFnZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TGlzdFN0eWxlSW1hZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX2ltYWdlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX2ltYWdl
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAibGlzdC1zdHlsZS1pbWFnZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX2ltYWdlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hfaW1hZ2UsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0
eWxlX2Rhc2hfaW1hZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImxpc3Qtc3R5bGUtaW1hZ2UiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF9wb3NpdGlvbkdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24pKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFz
aF9zdHlsZV9kYXNoX3Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibGlz
dC1zdHlsZS1wb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX2xpc3RfZGFzaF9zdHlsZV9kYXNoX3Bvc2l0aW9uU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlz
dFN0eWxlUG9zaXRpb24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbGlzdF9kYXNoX3N0eWxlX2Rhc2hf
cG9zaXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImxpc3Qtc3R5bGUtcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBlR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFz
aF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2xpc3RfZGFz
aF9zdHlsZV9kYXNoX3R5cGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJsaXN0LXN0eWxlLXR5cGUiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5
bGVfZGFzaF90eXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9saXN0X2Rhc2hfc3R5bGVfZGFzaF90eXBlLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X2xpc3RfZGFzaF9zdHlsZV9kYXNoX3R5cGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImxpc3Qtc3R5bGUtdHlwZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9jaykpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxv
Y2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hf
YmxvY2tHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXJnaW4tYmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1hcmdpbkJsb2NrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbl9kYXNoX2Jsb2NrLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW4tYmxvY2siKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFz
aF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFy
Z2luQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURl
Y2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAibWFyZ2luLWJsb2NrLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWFyZ2luQmxvY2tFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYmxvY2tfZGFz
aF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIm1hcmdpbi1ibG9jay1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5CbG9ja1N0YXJ0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ibG9ja19k
YXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdp
bl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXJnaW4tYmxvY2stc3Rh
cnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJn
aW5fZGFzaF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luQmxvY2tTdGFydCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9i
bG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1ibG9j
ay1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbl9kYXNoX2JvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TWFyZ2luQm90dG9tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfYm90dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibWFyZ2lu
LWJvdHRvbSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbl9kYXNoX2JvdHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9ib3R0b20sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
bWFyZ2luX2Rhc2hfYm90dG9tU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJtYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJnaW5JbmxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtYXJnaW4taW5saW5lIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TWFyZ2luSW5saW5lLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21hcmdpbl9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1pbmxpbmUiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFz
aF9pbmxpbmVfZGFzaF9lbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmdpbklubGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZEdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIm1hcmdpbi1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWFyZ2luSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9p
bmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIm1hcmdpbi1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpbklubGluZVN0YXJ0KSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5f
ZGFzaF9pbmxpbmVfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm1h
cmdpbi1pbmxpbmUtc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1h
cmdpbklubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX2lubGluZV9k
YXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJtYXJnaW4taW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5TWFyZ2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAibWFyZ2luLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9sZWZ0
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX21hcmdpbl9kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1sZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfcmlnaHRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF9yaWdodEdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIm1hcmdpbi1yaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3JpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2lu
X2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfcmlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1hcmdpbi1yaWdodCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3RvcEdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFyZ2luVG9wKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5fZGFzaF90b3As
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfdG9w
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAibWFyZ2luLXRvcCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmdpbl9kYXNoX3RvcFNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmdp
blRvcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJnaW5f
ZGFzaF90b3AsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbWFyZ2luX2Rhc2hfdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJnaW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfZW5kR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJrZXJFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX2VuZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9lbmRHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJtYXJrZXItZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFya2VyRW5kLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX2Vu
ZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXJrZXJfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgIm1hcmtlci1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9taWRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlck1pZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfbWlkLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX21pZEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIm1hcmtlci1taWQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9tYXJrZXJfZGFzaF9taWRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfbWlkLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21h
cmtlcl9kYXNoX21pZFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAibWFya2VyLW1pZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlNYXJrZXJTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fbWFya2VyX2Rhc2hfc3RhcnRHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJtYXJrZXItc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXJrZXJfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0LCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hcmtlcl9kYXNoX3N0
YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21hcmtlcl9kYXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXJrZXItc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rhc2hfdHlwZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWFza1R5cGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21hc2tfZGFzaF90eXBlR2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAibWFzay10eXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fbWFza19kYXNoX3R5cGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlNYXNrVHlwZSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNrX2Rhc2hfdHlwZSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXNr
X2Rhc2hfdHlwZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAibWFzay10eXBlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWF0aF9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXRoU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX21hdGhfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9tYXRoX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXRoLXN0
eWxlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF0
aF9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF0aFN0eWxlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21hdGhfZGFzaF9zdHlsZSwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXRoX2Rhc2hfc3R5
bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1hdGgtc3R5bGUiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eU1heEJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIm1heC1ibG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfYmxvY2tfZGFzaF9zaXplU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5TWF4QmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX21heF9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9ibG9ja19kYXNoX3Np
emVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1heC1ibG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWF4X2Rhc2hfaGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlNYXhIZWlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX21heF9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9oZWlnaHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXgtaGVpZ2h0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rh
c2hfaGVpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9oZWlnaHRT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1h
eC1oZWlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlNYXhJbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2lubGluZV9kYXNoX3NpemVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJtYXgtaW5saW5lLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5TWF4SW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAg
ICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9tYXhfZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX2lubGluZV9k
YXNoX3NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm1heC1pbmxpbmUtc2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX21heF9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlNYXhXaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fbWF4X2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtYXgtd2lk
dGgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9tYXhf
ZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1heFdpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21heF9kYXNoX3dpZHRoU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtYXgt
d2lkdGgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9t
aW5fZGFzaF9ibG9ja19kYXNoX3NpemVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eU1pbkJsb2NrU2l6ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0
eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfYmxvY2tfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIm1pbi1ibG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfYmxvY2tfZGFzaF9zaXplU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
TWluQmxvY2tTaXplLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X21pbl9kYXNoX2Jsb2NrX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9ibG9ja19kYXNoX3NpemVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1pbi1i
bG9jay1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fbWluX2Rhc2hfaGVpZ2h0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlN
aW5IZWlnaHQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX21pbl9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9taW5fZGFzaF9oZWlnaHRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaW4taGVpZ2h0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fbWluX2Rhc2hfaGVp
Z2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2hlaWdodCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9oZWlnaHRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1pbi1oZWln
aHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5f
ZGFzaF9pbmxpbmVfZGFzaF9zaXplR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlNaW5JbmxpbmVTaXplKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2lubGluZV9kYXNoX3NpemVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJtaW4taW5saW5lLXNpemUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF9pbmxpbmVfZGFzaF9zaXplU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5TWluSW5saW5lU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9taW5fZGFzaF9pbmxpbmVfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX2lubGluZV9kYXNoX3Np
emVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im1pbi1pbmxpbmUtc2l6ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX21pbl9kYXNoX3dpZHRoR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlNaW5XaWR0aCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWluX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fbWluX2Rhc2hfd2lkdGhHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJtaW4td2lkdGgiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taW5fZGFzaF93
aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eU1pbldpZHRoLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX3dpZHRoLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21pbl9kYXNoX3dpZHRoU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJtaW4td2lkdGgi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhfZGFz
aF9ibGVuZF9kYXNoX21vZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU1p
eEJsZW5kTW9kZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX21peF9kYXNoX2JsZW5kX2Rhc2hfbW9kZUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIm1peC1ibGVuZC1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fbWl4X2Rhc2hfYmxlbmRfZGFzaF9tb2RlU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5TWl4Qmxl
bmRNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX21peF9k
YXNoX2JsZW5kX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9taXhfZGFzaF9ibGVuZF9kYXNoX21vZGVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm1peC1ibGVuZC1t
b2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb2Jq
ZWN0X2Rhc2hfZml0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPYmplY3RG
aXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X29iamVjdF9kYXNoX2ZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9vYmplY3RfZGFzaF9maXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvYmplY3QtZml0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb2JqZWN0X2Rhc2hfZml0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5T2JqZWN0Rml0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX29iamVjdF9kYXNoX2ZpdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RfZGFzaF9maXRTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9iamVjdC1maXQiKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RfZGFz
aF9wb3NpdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T2JqZWN0UG9z
aXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX29iamVjdF9kYXNoX3Bvc2l0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX29iamVjdF9kYXNoX3Bvc2l0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib2JqZWN0LXBv
c2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b2JqZWN0X2Rhc2hfcG9zaXRpb25TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPYmplY3RQb3NpdGlvbiwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vYmplY3RfZGFzaF9wb3NpdGlv
biwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vYmplY3RfZGFzaF9wb3NpdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib2JqZWN0LXBvc2l0aW9uIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9j
b2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rh
c2hfY29sb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRsaW5lLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX2NvbG9yU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5T3V0bGluZUNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX291dGxpbmVfZGFzaF9jb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfY29sb3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm91dGxpbmUt
Y29sb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dXRsaW5lX2Rhc2hfb2Zmc2V0R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlP
dXRsaW5lT2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfb2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZzZXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdXRs
aW5lLW9mZnNldCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX291dGxpbmVfZGFzaF9vZmZzZXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9vZmZz
ZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fb3V0bGluZV9kYXNoX29mZnNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZS1vZmZzZXQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfc3R5bGVHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX3N0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFz
aF9zdHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm91dGxpbmUtc3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfc3R5bGVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlPdXRsaW5lU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fb3V0bGluZV9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+
OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291dGxpbmVfZGFzaF9zdHlsZVNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3V0bGluZS1z
dHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX291
dGxpbmVfZGFzaF93aWR0aEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fb3V0bGluZV9kYXNoX3dpZHRoR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAib3V0bGluZS13
aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX291
dGxpbmVfZGFzaF93aWR0aFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdXRsaW5lX2Rhc2hfd2lkdGgsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3V0
bGluZV9kYXNoX3dpZHRoU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJvdXRsaW5lLXdpZHRoIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyZmxvd1dyYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfd3JhcCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xh
cmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3dyYXBHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJvdmVyZmxvdy13cmFwIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF93cmFwU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3Zl
cmZsb3dXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVl
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292
ZXJmbG93X2Rhc2hfd3JhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3dyYXBTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm92ZXJmbG93LXdyYXAiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNo
X3hHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJmbG93WCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3df
ZGFzaF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93
X2Rhc2hfeEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92ZXJmbG93LXgiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3hTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlPdmVyZmxvd1gsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
b3ZlcmZsb3dfZGFzaF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeFNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAib3ZlcmZsb3cteCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcmZsb3dZKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxvd19kYXNoX3ks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF95
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAib3ZlcmZsb3cteSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJmbG93X2Rhc2hfeVNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJm
bG93WSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyZmxv
d19kYXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fb3ZlcmZsb3dfZGFzaF95U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJvdmVyZmxvdy15Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5n
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3IpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJz
Y3JvbGxfZGFzaF9iZWhhdmlvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdmVyc2Nyb2xs
LWJlaGF2aW9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcnNjcm9sbEJlaGF2
aW9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3Jv
bGxfZGFzaF9iZWhhdmlvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm92ZXJzY3JvbGwtYmVo
YXZpb3IiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9v
dmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlPdmVyc2Nyb2xsQmVoYXZpb3JYKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFz
aF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxf
ZGFzaF9iZWhhdmlvcl9kYXNoX3hHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJvdmVyc2Nyb2xsLWJlaGF2aW9y
LXgiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVy
c2Nyb2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5T3ZlcnNjcm9sbEJlaGF2
aW9yWCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9vdmVyc2Ny
b2xsX2Rhc2hfYmVoYXZpb3JfZGFzaF94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNo
X3hTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im92ZXJzY3JvbGwtYmVoYXZpb3IteCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3lHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eU92ZXJzY3JvbGxCZWhhdmlvclkpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX292ZXJzY3JvbGxf
ZGFzaF9iZWhhdmlvcl9kYXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fb3ZlcnNjcm9sbF9kYXNoX2JlaGF2aW9yX2Rhc2hfeUdldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIm92
ZXJzY3JvbGwtYmVoYXZpb3IteSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3lTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlPdmVyc2Nyb2xsQmVoYXZpb3JZLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX292ZXJzY3JvbGxfZGFzaF9iZWhhdmlvcl9kYXNoX3ksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fb3ZlcnNjcm9sbF9k
YXNoX2JlaGF2aW9yX2Rhc2hfeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAib3ZlcnNjcm9sbC1iZWhhdmlvci15Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWRkaW5nQmxvY2spKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9i
bG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfYmxvY2tHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWRkaW5nLWJsb2NrIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ0Jsb2NrLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmct
YmxvY2siKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVBhZGRpbmdCbG9ja0VuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfZW5kLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNo
X2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmctYmxvY2stZW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hf
ZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0Jsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRk
aW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctYmxvY2stZW5kIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hf
c3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdCbG9ja1N0
YXJ0KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInBhZGRpbmctYmxvY2stc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9zdGFydFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVBhZGRpbmdCbG9ja1N0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFz
aF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJwYWRkaW5nLWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2JvdHRvbUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSkpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2Jv
dHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfYm90dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZy1ib3R0b20iKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9tU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfYm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9ib3R0b21T
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBh
ZGRpbmctYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFkZGluZ19kYXNoX2lubGluZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5UGFkZGluZ0lubGluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0
PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAicGFkZGluZy1pbmxpbmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0lubGlu
ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfaW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctaW5saW5lIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGlu
ZV9kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ0lu
bGluZUVuZCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicGFkZGluZy1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVBhZGRpbmdJbmxpbmVFbmQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX2VuZCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hf
aW5saW5lX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJwYWRkaW5nLWlubGluZS1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdJbmxpbmVTdGFydCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFk
ZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgInBhZGRpbmctaW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2lubGluZV9kYXNoX3N0YXJ0U2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5UGFkZGluZ0lubGluZVN0YXJ0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydCwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctaW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2xlZnRHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0KSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfbGVm
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hf
bGVmdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZGRpbmctbGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFzaF9sZWZ0U2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5UGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGFkZGluZ19kYXNoX2xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInBhZGRpbmctbGVmdCIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFz
aF9yaWdodEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWRkaW5nX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fcGFkZGluZ19kYXNoX3JpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFkZGluZy1yaWdodCIpOwp9
CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRpbmdfZGFz
aF9yaWdodFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNo
X3JpZ2h0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJwYWRkaW5nLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5UGFkZGluZ1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fcGFkZGluZ19kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfdG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFk
ZGluZy10b3AiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9wYWRkaW5nX2Rhc2hfdG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWRkaW5nX2Rhc2hfdG9wLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZGRp
bmdfZGFzaF90b3BTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInBhZGRpbmctdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0
eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hfYWZ0ZXJHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9h
ZnRlciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hf
YnJlYWtfZGFzaF9hZnRlckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBhZ2UtYnJlYWstYWZ0ZXIiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJl
YWtfZGFzaF9hZnRlclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2FmdGVy
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2FmdGVyU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwYWdlLWJyZWFrLWFmdGVyIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rh
c2hfYmVmb3JlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWdlQnJlYWtC
ZWZvcmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2JlZm9yZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmVHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJwYWdlLWJyZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2JlZm9yZVNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVBhZ2VCcmVha0JlZm9yZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFzaF9iZWZvcmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rhc2hf
YmVmb3JlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJwYWdlLWJyZWFrLWJlZm9yZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rhc2hfYnJlYWtfZGFz
aF9pbnNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9k
YXNoX2JyZWFrX2Rhc2hfaW5zaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNz
ZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGFnZS1icmVhay1pbnNpZGUi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWdlX2Rh
c2hfYnJlYWtfZGFzaF9pbnNpZGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsIFdURk1v
dmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFnZV9kYXNoX2JyZWFrX2Rh
c2hfaW5zaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhZ2VfZGFzaF9icmVha19kYXNoX2luc2lkZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGFnZS1icmVhay1pbnNpZGUi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wYWludF9k
YXNoX29yZGVyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQYWludE9yZGVy
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
YWludF9kYXNoX29yZGVyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3BhaW50X2Rhc2hfb3JkZXJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwYWludC1vcmRlciIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BhaW50X2Rhc2hfb3JkZXJT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlQYWludE9yZGVyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3BhaW50X2Rhc2hfb3JkZXIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGFpbnRfZGFzaF9vcmRlclNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGFpbnQtb3Jk
ZXIiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJz
cGVjdGl2ZV9kYXNoX29yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
UGVyc3BlY3RpdmVPcmlnaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicGVyc3BlY3RpdmUtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5TZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlQZXJzcGVjdGl2ZU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdp
blNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
cGVyc3BlY3RpdmUtb3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF94R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblgpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hf
b3JpZ2luX2Rhc2hfeCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3hHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJwZXJzcGVjdGl2
ZS1vcmlnaW4teCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeFNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNl
dHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAg
IHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBlcnNwZWN0
aXZlT3JpZ2luWCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
ZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3gsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5f
ZGFzaF94U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJwZXJzcGVjdGl2ZS1vcmlnaW4teCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganND
U1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hfb3JpZ2luX2Rhc2hfeUdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW5ZKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wZXJzcGVjdGl2
ZV9kYXNoX29yaWdpbl9kYXNoX3ksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGVy
c3BlY3RpdmUtb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9wZXJzcGVjdGl2ZV9kYXNoX29yaWdpbl9kYXNoX3lTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlQ
ZXJzcGVjdGl2ZU9yaWdpblksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fcGVyc3BlY3RpdmVfZGFzaF9vcmlnaW5fZGFzaF95LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BlcnNwZWN0aXZlX2Rhc2hf
b3JpZ2luX2Rhc2hfeVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAicGVyc3BlY3RpdmUtb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2NvbnRlbnRHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBsYWNlQ29udGVudCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9jb250ZW50LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfY29udGVu
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInBsYWNlLWNvbnRlbnQiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2NvbnRlbnRTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBB
dHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZd
IHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlQbGFjZUNvbnRlbnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fcGxhY2VfZGFzaF9jb250ZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfY29udGVudFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicGxhY2UtY29udGVudCIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rh
c2hfaXRlbXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVBsYWNlSXRlbXMp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Bs
YWNlX2Rhc2hfaXRlbXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGxhY2VfZGFzaF9pdGVtc0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInBsYWNlLWl0ZW1zIik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9pdGVtc1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVBsYWNlSXRlbXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fcGxhY2VfZGFzaF9pdGVtcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wbGFjZV9kYXNoX2l0ZW1zU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwbGFjZS1pdGVt
cyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNl
X2Rhc2hfc2VsZkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UGxhY2VTZWxm
KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9w
bGFjZV9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cGxhY2VfZGFzaF9zZWxmR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicGxhY2Utc2VsZiIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BsYWNlX2Rhc2hfc2VsZlNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVBsYWNlU2VsZiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICBy
ZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9wbGFjZV9kYXNoX3NlbGYsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcGxhY2VfZGFzaF9zZWxmU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwbGFjZS1zZWxmIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fcG9pbnRlcl9kYXNo
X2V2ZW50c0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50
cykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
cG9pbnRlcl9kYXNoX2V2ZW50cywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9wb2ludGVyX2Rhc2hfZXZlbnRzR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAicG9pbnRlci1ldmVudHMi
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVy
X2Rhc2hfZXZlbnRzU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9wb2ludGVyX2Rhc2hfZXZlbnRzLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3BvaW50
ZXJfZGFzaF9ldmVudHNTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInBvaW50ZXItZXZlbnRzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c0NTU1N0eWxlRGVjbGFyYXRpb25fcm93X2Rhc2hfZ2FwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlSb3dHYXApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Jvd19kYXNoX2dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9yb3dfZGFzaF9nYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJyb3ctZ2FwIik7
Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fcm93X2Rhc2hf
Z2FwU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5Um93R2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Jvd19kYXNoX2dhcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9yb3dfZGFzaF9nYXBTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInJvdy1nYXAiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhh
dmlvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3Ip
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX2JlaGF2aW9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX2JlaGF2aW9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLWJlaGF2aW9y
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xs
X2Rhc2hfYmVoYXZpb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvciwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9iZWhhdmlvciwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9iZWhhdmlvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsLWJlaGF2aW9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW4pKSkpOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJn
aW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtbWFyZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX21hcmdpbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5TZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4i
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9tYXJnaW5fZGFzaF9ibG9ja0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luQmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNo
X2Jsb2NrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLW1hcmdpbi1ibG9jayIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9k
YXNoX2Jsb2NrU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2ssIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxv
Y2ssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4tYmxvY2siKTsK
fQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tFbmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2Nr
X2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xs
LW1hcmdpbi1ibG9jay1lbmQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9ja19kYXNoX2VuZFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtbWFyZ2luLWJsb2Nr
LWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJsb2NrU3RhcnQpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdp
bl9kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYmxvY2tfZGFzaF9zdGFydEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgInNjcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBi
b29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ibG9j
a19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luQmxvY2tTdGFydCwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5f
ZGFzaF9ibG9ja19kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2Jsb2NrX2Rh
c2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInNjcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b21H
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbUdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgInNjcm9sbC1tYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsTWFyZ2luQm90dG9tLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9tYXJnaW5fZGFzaF9ib3R0b21TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hf
aW5saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW5J
bmxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGwtbWFyZ2luLWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpbklubGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfbWFyZ2luX2Rhc2hfaW5saW5lU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtbWFyZ2luLWlubGluZSIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdp
bl9kYXNoX2lubGluZV9kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luSW5saW5lRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFz
aF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLW1h
cmdpbi1pbmxpbmUtZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfZW5kU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsTWFyZ2luSW5saW5lRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX2VuZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4taW5s
aW5lLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX2lubGluZV9kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxNYXJnaW5JbmxpbmVTdGFydCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9k
YXNoX2lubGluZV9kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luSW5saW5lU3Rh
cnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfbWFyZ2luX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rh
c2hfaW5saW5lX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFy
Z2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9sZWZ0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAic2Nyb2xsLW1hcmdpbi1sZWZ0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkxlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9t
YXJnaW5fZGFzaF9sZWZ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGwtbWFyZ2luLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF9yaWdodEdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQpKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9s
bF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0R2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c2Nyb2xsLW1hcmdpbi1yaWdodCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsTWFyZ2luUmlnaHQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfbWFyZ2lu
X2Rhc2hfcmlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInNjcm9sbC1tYXJnaW4tcmlnaHQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3BHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblRvcCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
bWFyZ2luX2Rhc2hfdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX21hcmdpbl9kYXNoX3RvcEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbC1tYXJn
aW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsX2Rhc2hfbWFyZ2luX2Rhc2hfdG9wU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9w
LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X21hcmdpbl9kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9tYXJnaW5fZGFzaF90b3BTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1tYXJn
aW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsX2Rhc2hfcGFkZGluZ0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
U2Nyb2xsUGFkZGluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Ny
b2xsLXBhZGRpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZywgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRk
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nIik7Cn0KCnN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2Jsb2NrR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5n
QmxvY2spKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9jaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJzY3JvbGwtcGFkZGluZy1ibG9jayIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCbG9jaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2ssIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Ny
b2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy1ibG9jayIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRp
bmdfZGFzaF9ibG9ja19kYXNoX2VuZEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsUGFkZGluZ0Jsb2NrRW5kKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFz
aF9lbmQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfZW5kR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXBh
ZGRpbmctYmxvY2stZW5kIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfZW5kU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5U2Nyb2xsUGFkZGluZ0Jsb2NrRW5kLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX2VuZCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYmxvY2tfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWJs
b2NrLWVuZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9ibG9ja19kYXNoX3N0YXJ0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nQmxvY2tTdGFydCkpKSk7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hf
cGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnRH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdf
ZGFzaF9ibG9ja19kYXNoX3N0YXJ0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0Jsb2NrU3Rh
cnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2Jsb2NrX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19k
YXNoX2Jsb2NrX2Rhc2hfc3RhcnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGlu
Z19kYXNoX2JvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xs
UGFkZGluZ0JvdHRvbSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2JvdHRvbSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYm90
dG9tR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXBhZGRpbmctYm90dG9tIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19k
YXNoX2JvdHRvbVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdCb3R0b20sIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2JvdHRvbSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfYm90dG9tU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy1i
b3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlTY3JvbGxQYWRkaW5nSW5saW5lKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5s
aW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3BhZGRpbmdfZGFzaF9pbmxpbmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtcGFkZGluZy1pbmxp
bmUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0lu
bGluZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxf
ZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxp
bmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InNjcm9sbC1wYWRkaW5nLWlubGluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmRH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdJbmxpbmVF
bmQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmQsIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lubGlu
ZV9kYXNoX2VuZEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFz
aF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGlu
Z0lubGluZUVuZCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
Y3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfZW5kLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3Bh
ZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9lbmRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9w
YWRkaW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdJbmxpbmVTdGFydCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNo
X2lubGluZV9kYXNoX3N0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxpbmVfZGFzaF9zdGFydEdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInNjcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9pbmxp
bmVfZGFzaF9zdGFydFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdJbmxpbmVTdGFydCwgV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRk
aW5nX2Rhc2hfaW5saW5lX2Rhc2hfc3RhcnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2lu
bGluZV9kYXNoX3N0YXJ0U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy1pbmxpbmUtc3RhcnQiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rh
c2hfbGVmdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFkZGlu
Z0xlZnQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9sZWZ0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9sZWZ0R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAic2Nyb2xsLXBhZGRpbmctbGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9sZWZ0U2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsUGFkZGluZ0xlZnQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX2xlZnQsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfcGFkZGluZ19kYXNoX2xlZnRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLWxlZnQiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hf
cmlnaHRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFBhZGRpbmdS
aWdodCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9yaWdodEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3JpZ2h0U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsUGFkZGluZ1JpZ2h0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3BhZGRpbmdfZGFzaF9yaWdodCwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3Jv
bGxfZGFzaF9wYWRkaW5nX2Rhc2hfcmlnaHRTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1wYWRkaW5nLXJpZ2h0Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGlu
Z19kYXNoX3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsUGFk
ZGluZ1RvcCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9wYWRkaW5nX2Rhc2hfdG9wR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAic2Nyb2xsLXBhZGRpbmctdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcFNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbFBhZGRpbmdUb3AsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfcGFkZGluZ19kYXNoX3RvcCwgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9w
YWRkaW5nX2Rhc2hfdG9wU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzY3JvbGwtcGFkZGluZy10b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfYWxpZ25HZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRv
cjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbFNuYXBBbGlnbikpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfc25hcF9kYXNoX2FsaWduLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0
aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9hbGlnbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInNjcm9sbC1z
bmFwLWFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX2FsaWduU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcEFs
aWduLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9k
YXNoX3NuYXBfZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfYWxpZ25TZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1z
bmFwLWFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFz
aF9tYXJnaW5HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtc25hcC1tYXJnaW4iKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rh
c2hfbWFyZ2luU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlW
YWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luLCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW4sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsLXNuYXAtbWFyZ2luIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9k
YXNoX21hcmdpbl9kYXNoX2JvdHRvbUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U2Nyb2xsTWFyZ2luQm90dG9tKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfYm90
dG9tLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b21HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzY3JvbGwtc25h
cC1tYXJnaW4tYm90dG9tIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2JvdHRvbVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVNjcm9sbE1hcmdpbkJvdHRvbSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfYm90dG9tLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9ib3R0b21TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLW1hcmdp
bi1ib3R0b20iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdEdldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCkpKSk7Cn0KCkpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNo
X21hcmdpbl9kYXNoX2xlZnQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX2xlZnRHZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJzY3JvbGwtc25hcC1tYXJnaW4tbGVmdCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9sZWZ0
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luTGVmdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfbGVm
dCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfbGVmdFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xsLXNuYXAtbWFy
Z2luLWxlZnQiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hfcmlnaHRHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblJpZ2h0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rh
c2hfbWFyZ2luX2Rhc2hfcmlnaHQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3JpZ2h0R2V0dGVyLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAic2Nyb2xsLXNuYXAtbWFyZ2luLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNo
X3JpZ2h0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1
ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luUmlnaHQsIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9k
YXNoX3JpZ2h0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF9yaWdodFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2Nyb2xs
LXNuYXAtbWFyZ2luLXJpZ2h0Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxl
RGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNoX3RvcEdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJv
cGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsTWFyZ2luVG9wKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9z
bmFwX2Rhc2hfbWFyZ2luX2Rhc2hfdG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3BHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJzY3JvbGwtc25hcC1tYXJnaW4tdG9wIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX21hcmdpbl9kYXNo
X3RvcFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVNjcm9sbE1hcmdpblRvcCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfbWFyZ2luX2Rhc2hf
dG9wLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9tYXJnaW5fZGFzaF90b3BTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLW1h
cmdpbi10b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfc3RvcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U2Nyb2xsU25hcFN0b3ApKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9zdG9wLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9z
dG9wR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXNuYXAtc3RvcCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNoX3NuYXBfZGFzaF9zdG9w
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFN0b3AsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3N0b3AsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rh
c2hfc25hcF9kYXNoX3N0b3BTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLXN0b3AiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zY3JvbGxfZGFzaF9zbmFwX2Rhc2hfdHlwZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGUpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Njcm9sbF9kYXNo
X3NuYXBfZGFzaF90eXBlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3Njcm9sbF9kYXNoX3NuYXBfZGFzaF90eXBlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic2Nyb2xsLXNuYXAt
dHlwZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3Nj
cm9sbF9kYXNoX3NuYXBfZGFzaF90eXBlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxs
KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2Nyb2xsU25hcFR5cGUsIFdU
Rk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25h
cF9kYXNoX3R5cGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fc2Nyb2xsX2Rhc2hfc25hcF9kYXNoX3R5cGVTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNjcm9sbC1zbmFwLXR5cGUi
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9k
YXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlTaGFwZUltYWdlVGhyZXNob2xkKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX2ltYWdlX2Rhc2hfdGhyZXNob2xkLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxl
RGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfaW1hZ2Vf
ZGFzaF90aHJlc2hvbGRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZS1pbWFnZS10aHJlc2hvbGQiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNo
X2ltYWdlX2Rhc2hfdGhyZXNob2xkU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElE
TFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U2hhcGVJbWFnZVRocmVzaG9sZCwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RF
RklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX2lt
YWdlX2Rhc2hfdGhyZXNob2xkLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfaW1hZ2VfZGFzaF90aHJlc2hvbGRTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNoYXBl
LWltYWdlLXRocmVzaG9sZCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX3NoYXBlX2Rhc2hfbWFyZ2luR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTaGFwZU1hcmdpbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NT
U1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
KQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxq
c0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9tYXJnaW5HZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJz
aGFwZS1tYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zaGFwZV9kYXNoX21hcmdpblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBs
LnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlTWFyZ2luLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfbWFyZ2luLCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3NoYXBlX2Rhc2hfbWFyZ2luU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJzaGFwZS1tYXJnaW4iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX291dHNpZGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlT3V0c2lkZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fc2hhcGVfZGFzaF9vdXRzaWRlLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfb3V0c2lkZUdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgInNoYXBlLW91dHNpZGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zaGFwZV9kYXNoX291dHNpZGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlT
aGFwZU91dHNpZGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
c2hhcGVfZGFzaF9vdXRzaWRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfb3V0c2lkZVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2hhcGUtb3V0c2lkZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hf
cmVuZGVyaW5nR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTaGFwZVJlbmRl
cmluZykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fc2hhcGVfZGFzaF9yZW5kZXJpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc2hhcGVfZGFzaF9yZW5kZXJpbmdHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzaGFwZS1yZW5k
ZXJpbmciKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
aGFwZV9kYXNoX3JlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NoYXBlX2Rhc2hfcmVuZGVyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3NoYXBlX2Rhc2hfcmVuZGVyaW5nU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzaGFwZS1yZW5kZXJpbmciKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTcGVha0FzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zcGVha19kYXNoX2FzLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrX2Rhc2hfYXNHZXR0ZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJzcGVhay1hcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3NwZWFrX2Rhc2hfYXNTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5z
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTcGVha0FzLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3NwZWFrX2Rhc2hfYXMsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3BlYWtfZGFz
aF9hc1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAic3BlYWstYXMiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9zdG9wX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVN0b3BDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3RvcF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0b3BfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInN0b3AtY29sb3IiKTsK
fQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rhc2hf
Y29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdG9wQ29sb3IsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3RvcF9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9jb2xvclNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3RvcC1j
b2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N0
b3BfZGFzaF9vcGFjaXR5R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdG9w
T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3RvcF9kYXNoX29wYWNpdHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVj
bGFyYXRpb25fc3RvcF9kYXNoX29wYWNpdHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdG9wLW9wYWNpdHki
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdG9wX2Rh
c2hfb3BhY2l0eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9vcGFjaXR5LCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0b3BfZGFzaF9v
cGFjaXR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJzdG9wLW9wYWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9jb2xvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5U3Ryb2tlQ29sb3IpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2NvbG9yR2V0dGVyLCBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
c3Ryb2tlLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlX2Rhc2hfY29sb3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VDb2xvciwgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9jb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdHJva2VfZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFycmF5R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNoYXJyYXkpKSkpOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hh
cnJheSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFz
aF9kYXNoYXJyYXlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2UtZGFzaGFycmF5Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfZGFzaGFy
cmF5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hhcnJheSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFz
aF9kYXNoYXJyYXlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInN0cm9rZS1kYXNoYXJyYXkiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNob2Zmc2V0R2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9kYXNob2Zm
c2V0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNo
X2Rhc2hvZmZzZXRHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2UtZGFzaG9mZnNldCIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hv
ZmZzZXRTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVl
SW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVl
KSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIo
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2Rhc2hvZmZzZXQsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
X2Rhc2hfZGFzaG9mZnNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAic3Ryb2tlLWRhc2hvZmZzZXQiKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lY2FwR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwKSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lY2Fw
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0
eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xp
bmVjYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJzdHJva2UtbGluZWNhcCIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVjYXBTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlTdHJva2VMaW5lY2FwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAg
IHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVjYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbGluZWNhcFNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tl
LWxpbmVjYXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl9zdHJva2VfZGFzaF9saW5lam9pbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWpvaW4pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NT
dHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8
anNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX2xpbmVqb2luR2V0dGVyLCBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAic3Ryb2tlLWxpbmVqb2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfbGluZWpvaW5TZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0
ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlTdHJva2VMaW5l
am9pbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2Vf
ZGFzaF9saW5lam9pbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9saW5lam9pblNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ryb2tlLWxpbmVqb2luIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hf
bWl0ZXJsaW1pdEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTWl0
ZXJsaW1pdCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlX2Rhc2hfbWl0ZXJsaW1pdCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5
bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9taXRlcmxpbWl0R2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ry
b2tlLW1pdGVybGltaXQiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdHJva2VfZGFzaF9taXRlcmxpbWl0U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJs
aW1pdCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2Vf
ZGFzaF9taXRlcmxpbWl0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX21pdGVybGltaXRTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZS1taXRlcmxpbWl0
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tl
X2Rhc2hfb3BhY2l0eUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tl
T3BhY2l0eSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fc3Ryb2tlX2Rhc2hfb3BhY2l0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9vcGFjaXR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAic3Ryb2tlLW9w
YWNpdHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9z
dHJva2VfZGFzaF9vcGFjaXR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eSwgV1RGTW92ZShu
YXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNU
T01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF9vcGFjaXR5LCAo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3N0cm9rZV9kYXNoX29wYWNpdHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZS1vcGFjaXR5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lkdGhHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF93aWR0aCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdHJva2VfZGFzaF93aWR0aEdl
dHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgInN0cm9rZS13aWR0aCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N0cm9rZV9kYXNoX3dpZHRoU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0
YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmli
dXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAg
ICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5U3Ry
b2tlV2lkdGgsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fc3Ry
b2tlX2Rhc2hfd2lkdGgsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fc3Ryb2tlX2Rhc2hfd2lkdGhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cm9rZS13aWR0aCIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2Nv
bG9yX2Rhc2hfc2NoZW1lc0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q29s
b3JTY2hlbWUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3N1cHBvcnRlZF9kYXNoX2NvbG9yX2Rhc2hfc2NoZW1lcywgKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9zdXBwb3J0ZWRfZGFzaF9jb2xvcl9kYXNoX3NjaGVt
ZXNHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJzdXBwb3J0ZWQtY29sb3Itc2NoZW1lcyIpOwp9CgpzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2NvbG9y
X2Rhc2hfc2NoZW1lc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJp
bmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUNvbG9yU2NoZW1lLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRU
RVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3N1cHBvcnRlZF9kYXNoX2NvbG9yX2Rhc2hfc2No
ZW1lcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbl9zdXBwb3J0ZWRfZGFzaF9jb2xvcl9kYXNoX3NjaGVtZXNTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN1cHBvcnRlZC1jb2xvci1z
Y2hlbWVzIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGFiX2Rhc2hfc2l6ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGFiU2l6
ZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGFiX2Rhc2hfc2l6ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90
YWJfZGFzaF9zaXplR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGFiLXNpemUiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJfZGFzaF9zaXplU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFj
dGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGFiU2l6ZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
YWJfZGFzaF9zaXplLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RhYl9kYXNoX3NpemVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRhYi1zaXplIik7Cn0KCnN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVfZGFzaF9sYXlvdXRHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KSkpKTsKfQoKSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZV9kYXNoX2xheW91dCwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90YWJsZV9kYXNoX2xheW91
dEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInRhYmxlLWxheW91dCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RhYmxlX2Rhc2hfbGF5b3V0U2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VGFibGVMYXlvdXQsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGFibGVfZGFzaF9sYXlvdXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdGFibGVfZGFzaF9sYXlvdXRTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRhYmxlLWxheW91dCIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbGln
bkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEFsaWduKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hf
YWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNo
X2FsaWduR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1hbGlnbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbGlnblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfYWxpZ24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWFsaWduIik7Cn0KCnN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FuY2hvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEFuY2hvcikpKSk7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2FuY2hv
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYW5j
aG9yR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1hbmNob3IiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfYW5jaG9yU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRv
RW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0
cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7
CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
VGV4dEFuY2hvciwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1
ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfYW5jaG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9hbmNob3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHQtYW5jaG9yIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRp
b25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSkp
KTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfZGVjb3JhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZGVjb3JhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFz
c2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtZGVjb3JhdGlvbiIp
Owp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9kZWNvcmF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInRleHQtZGVjb3JhdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3Ip
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0
eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9jb2xvckdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgInRleHQtZGVjb3JhdGlvbi1jb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfY29sb3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25fZGFzaF9jb2xvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dC1kZWNvcmF0aW9uLWNvbG9yIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29y
YXRpb25fZGFzaF9saW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbkxpbmUpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfbGluZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xp
bmVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tbGluZSIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rh
c2hfbGluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX2xp
bmUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF9saW5lU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tbGluZSIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9kZWNvcmF0aW9uX2Rhc2hfc2tpcEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VGV4dERlY29yYXRpb25Ta2lwKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3NraXAsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9za2lwR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1kZWNvcmF0aW9uLXNraXAiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3Jh
dGlvbl9kYXNoX3NraXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9w
ZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblNraXAsIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25f
ZGFzaF9za2lwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc2tpcFNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dC1kZWNvcmF0aW9u
LXNraXAiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90
ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9K
UzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0
eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9k
ZWNvcmF0aW9uX2Rhc2hfc3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tc3R5
bGUiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFw
dG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpj
YWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJu
IGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25T
dHlsZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoK
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rh
c2hfZGVjb3JhdGlvbl9kYXNoX3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpz
ZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfc3R5
bGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InRleHQtZGVjb3JhdGlvbi1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9kZWNvcmF0aW9uX2Rhc2hfdGhpY2tuZXNzR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcykp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3MsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFzaF90aGlja25lc3NHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2RlY29yYXRpb25fZGFz
aF90aGlja25lc3NTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgV1RGTW92
ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlv
bl9kYXNoX3RoaWNrbmVzcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZGVjb3JhdGlvbl9kYXNoX3RoaWNrbmVzc1Nl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4
dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXMsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhhc2lzR2V0
dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAidGV4dC1lbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpcywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90ZXh0X2Rhc2hfZW1waGFzaXMsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhhc2lzU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhhc2lz
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2VtcGhhc2lzX2Rhc2hfY29sb3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9jb2xvciwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFz
aXNfZGFzaF9jb2xvckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtZW1waGFzaXMtY29sb3IiKTsKfQoK
c3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1w
aGFzaXNfZGFzaF9jb2xvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yLCBX
VEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBo
YXNpc19kYXNoX2NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX2NvbG9yU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhh
c2lzLWNvbG9yIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dF9kYXNoX2VtcGhhc2lzX2Rhc2hfcG9zaXRpb25HZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uKSkpKTsKfQoKSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFz
aXNfZGFzaF9wb3NpdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQt
ZW1waGFzaXMtcG9zaXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0
dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0g
ewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9
KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF9lbXBoYXNpc19kYXNoX3Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIik7Cn0KCnN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX2VtcGhh
c2lzX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1N0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9zdHlsZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFzaF9z
dHlsZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtZW1waGFzaXMtc3R5bGUiKTsKfQoKc3RhdGljIGlu
bGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfZW1waGFzaXNfZGFz
aF9zdHlsZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLCBXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RP
TV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNo
X3N0eWxlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURl
Y2xhcmF0aW9uX3RleHRfZGFzaF9lbXBoYXNpc19kYXNoX3N0eWxlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LWVtcGhhc2lzLXN0eWxl
Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9k
YXNoX2luZGVudEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dEluZGVu
dCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX2luZGVudCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfaW5kZW50R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidGV4dC1pbmRlbnQiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfaW5kZW50
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5VGV4dEluZGVudCwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7
CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfaW5kZW50LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9pbmRlbnRTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHQtaW5k
ZW50Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4
dF9kYXNoX29yaWVudGF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
ZXh0T3JpZW50YXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3RleHRfZGFzaF9vcmllbnRhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfb3JpZW50YXRpb25HZXR0ZXIsIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJ0ZXh0LW9yaWVudGF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX29yaWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAg
cmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VGV4dE9yaWVu
dGF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF9vcmllbnRhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfb3JpZW50YXRpb25TZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRleHQtb3JpZW50YXRpb24i
KTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rh
c2hfb3ZlcmZsb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRPdmVy
ZmxvdykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRp
b25fdGV4dF9kYXNoX292ZXJmbG93LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRfZGFzaF9vdmVyZmxvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtb3ZlcmZsb3ci
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rh
c2hfb3ZlcmZsb3dTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5n
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3csIFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRF
UihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX292ZXJmbG93LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9vdmVyZmxvd1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAidGV4dC1vdmVyZmxvdyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9yZW5kZXJpbmdHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkK
ewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
ICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF9yZW5kZXJpbmcsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3JlbmRlcmluZ0dldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgInRleHQtcmVuZGVyaW5nIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3JlbmRlcmluZ1NldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRl
eHRSZW5kZXJpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3JlbmRlcmluZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfcmVuZGVyaW5nU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LXJlbmRlcmluZyIp
Owp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFz
aF9zaGFkb3dHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRTaGFkb3cp
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Rl
eHRfZGFzaF9zaGFkb3csIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3NoYWRvd0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtc2hhZG93Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3NoYWRvd1Nl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVRleHRTaGFkb3csIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX3NoYWRvdywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfc2hhZG93U2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LXNoYWRv
dyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF90cmFuc2Zvcm1HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRU
cmFuc2Zvcm0pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xh
cmF0aW9uX3RleHRfZGFzaF90cmFuc2Zvcm0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdGV4dF9kYXNoX3RyYW5zZm9ybUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRleHQtdHJh
bnNmb3JtIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3RyYW5zZm9ybVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7
CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExV
U1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3RyYW5zZm9ybSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90ZXh0X2Rhc2hfdHJhbnNmb3JtU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXh0LXRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZz
ZXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVPZmZz
ZXQpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9u
X3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX29mZnNldEdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgInRleHQtdW5kZXJsaW5lLW9mZnNldCIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXRT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lT2Zmc2V0LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9vZmZzZXQsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dGV4dF9kYXNoX3VuZGVybGluZV9kYXNoX29mZnNldFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGV4dC11bmRlcmxpbmUtb2Zmc2V0Iik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3Vu
ZGVybGluZV9kYXNoX3Bvc2l0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdh
Y3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lUG9zaXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRfZGFzaF91bmRlcmxpbmVfZGFzaF9wb3NpdGlvbiwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0X2Rhc2hfdW5kZXJs
aW5lX2Rhc2hfcG9zaXRpb25HZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ0ZXh0LXVuZGVybGluZS1wb3NpdGlv
biIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RleHRf
ZGFzaF91bmRlcmxpbmVfZGFzaF9wb3NpdGlvblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVy
biBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQ
b3NpdGlvbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsK
fQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90ZXh0
X2Rhc2hfdW5kZXJsaW5lX2Rhc2hfcG9zaXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdGV4dF9kYXNoX3VuZGVybGluZV9kYXNo
X3Bvc2l0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hfYWN0aW9uR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNP
YmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3Ry
aW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUb3VjaEFjdGlvbikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG91Y2hfZGFzaF9hY3Rpb24sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdG91Y2hfZGFzaF9hY3Rpb25HZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ0b3VjaC1hY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl90b3VjaF9kYXNoX2FjdGlvblNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRvdWNo
QWN0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RvdWNo
X2Rhc2hfYWN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RvdWNoX2Rhc2hfYWN0aW9uU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0b3VjaC1hY3Rpb24iKTsKfQoKc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9ib3hH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybUJveCkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3Jt
X2Rhc2hfYm94LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
Zm9ybV9kYXNoX2JveEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zZm9ybS1ib3giKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9ib3hT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlUcmFuc2Zvcm1Cb3gsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0p
OwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0
eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfYm94LCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX2JveFNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJh
bnNmb3JtLWJveCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtT3JpZ2luKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAidHJhbnNmb3JtLW9yaWdpbiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpblNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRy
YW5zZm9ybU9yaWdpbiwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2Zvcm1fZGFzaF9vcmlnaW4sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luU2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2Zvcm0t
b3JpZ2luIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeEdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8
SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWCkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfeCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmln
aW5fZGFzaF94R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhbnNmb3JtLW9yaWdpbi14Iik7Cn0KCnN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3Jp
Z2luX2Rhc2hfeFNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblgsIFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hf
eCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF94U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2Zvcm0tb3JpZ2luLXgiKTsKfQoK
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFz
aF9vcmlnaW5fZGFzaF95R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFu
c2Zvcm1PcmlnaW5ZKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95LCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+Ojpn
ZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3lHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJ0cmFuc2Zvcm0tb3JpZ2luLXkiKTsKfQoKc3RhdGljIGlubGluZSBib29s
IHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95U2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luWSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAg
fSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9vcmlnaW5fZGFzaF95LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9y
bV9kYXNoX29yaWdpbl9kYXNoX3lTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInRyYW5zZm9ybS1vcmlnaW4teSIpOwp9CgpzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNo
X3pHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblop
KSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3Ry
YW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3osIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxl
RGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2luX2Rhc2hfekdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
InRyYW5zZm9ybS1vcmlnaW4teiIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3pTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9u
U3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlU
cmFuc2Zvcm1PcmlnaW5aLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVy
biB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0
aW9uX3RyYW5zZm9ybV9kYXNoX29yaWdpbl9kYXNoX3osIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfb3JpZ2lu
X2Rhc2hfelNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAidHJhbnNmb3JtLW9yaWdpbi16Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5bGVHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVj
dCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zZm9ybVN0eWxlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9zdHlsZSwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURl
Y2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2Zvcm1fZGFzaF9zdHls
ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zZm9ybS1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zZm9ybV9kYXNoX3N0eWxlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwog
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNmb3JtU3R5bGUsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5bGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNmb3JtX2Rhc2hfc3R5bGVTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRyYW5z
Zm9ybS1zdHlsZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX3RyYW5zaXRpb25fZGFzaF9kZWxheUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5VHJhbnNpdGlvbkRlbGF5KSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
Q1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX2RlbGF5R2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAidHJhbnNpdGlvbi1kZWxheSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kZWxheVNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0Vt
cHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJp
YnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewog
ICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRy
YW5zaXRpb25EZWxheSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl90cmFuc2l0aW9uX2Rhc2hfZGVsYXksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNl
dDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX2RlbGF5U2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0cmFuc2l0aW9u
LWRlbGF5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlUcmFuc2l0aW9uRHVyYXRpb24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfZHVyYXRpb25H
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ0cmFuc2l0aW9uLWR1cmF0aW9uIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX2R1cmF0aW9uU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFy
YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
TGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VHJhbnNpdGlvbkR1cmF0aW9uLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAg
ICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9kdXJhdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9u
X2Rhc2hfZHVyYXRpb25TZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgInRyYW5zaXRpb24tZHVyYXRpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVRyYW5zaXRpb25Qcm9wZXJ0eSkpKSk7Cn0K
CkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlv
bl9kYXNoX3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9u
X3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRyYW5zaXRpb24tcHJv
cGVydHkiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl90
cmFuc2l0aW9uX2Rhc2hfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1w
bC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUcmFuc2l0aW9uUHJvcGVydHks
IFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9k
YXNoX3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX3RyYW5zaXRpb25fZGFzaF9wcm9wZXJ0eVNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNpdGlvbi1wcm9wZXJ0
eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3RyYW5z
aXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKSkpKTsKfQoKSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfdGltaW5n
X2Rhc2hfZnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
dHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0aW9uR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJh
bnNpdGlvbi10aW1pbmctZnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl90cmFuc2l0aW9uX2Rhc2hfdGltaW5nX2Rhc2hfZnVuY3Rpb25TZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdHJhbnNpdGlvbl9kYXNoX3RpbWluZ19kYXNoX2Z1bmN0
aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX3RyYW5zaXRpb25fZGFzaF90aW1pbmdfZGFzaF9mdW5jdGlvblNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhbnNpdGlvbi10aW1p
bmctZnVuY3Rpb24iKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl91bmljb2RlX2Rhc2hfYmlkaUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5VW5pY29kZUJpZGkpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHls
ZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9iaWRpLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NT
dHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9iaWRpR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidW5pY29k
ZS1iaWRpIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
dW5pY29kZV9kYXNoX2JpZGlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNW
U3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgV1RGTW92ZShuYXRp
dmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hfYmlkaSwgKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmlj
b2RlX2Rhc2hfYmlkaVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAidW5pY29kZS1iaWRpIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZV9kYXNoX3JhbmdlR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qp
CnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNvZGVfZGFzaF9yYW5nZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hfcmFuZ2VHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJ1bmljb2RlLXJhbmdlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdW5pY29kZV9kYXNoX3JhbmdlU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlT
dHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAg
ICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5VW5pY29k
ZVJhbmdlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3VuaWNv
ZGVfZGFzaF9yYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbl91bmljb2RlX2Rhc2hfcmFuZ2VTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInVuaWNvZGUtcmFuZ2UiKTsKfQoKc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JfZGFzaF9lZmZl
Y3RHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdCkpKSk7
Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVjdG9y
X2Rhc2hfZWZmZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3Zl
Y3Rvcl9kYXNoX2VmZmVjdEdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInZlY3Rvci1lZmZlY3QiKTsKfQoKc3Rh
dGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl92ZWN0b3JfZGFzaF9lZmZl
Y3RTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3QsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAg
IH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fdmVjdG9yX2Rhc2hfZWZmZWN0LCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVj
bGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3ZlY3Rvcl9kYXNoX2VmZmVj
dFNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
dmVjdG9yLWVmZmVjdCIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xh
cmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ25HZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVZlcnRpY2FsQWxpZ24pKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanND
U1NTdHlsZURlY2xhcmF0aW9uX3ZlcnRpY2FsX2Rhc2hfYWxpZ24sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46Omdl
dDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxfZGFzaF9hbGlnbkdldHRlciwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgInZlcnRpY2FsLWFsaWduIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fdmVydGljYWxfZGFzaF9hbGlnblNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJl
dHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVZlcnRpY2FsQWxp
Z24sIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpT
Q19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fdmVydGljYWxf
ZGFzaF9hbGlnbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbl92ZXJ0aWNhbF9kYXNoX2FsaWduU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ2ZXJ0aWNhbC1hbGlnbiIpOwp9CgpzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlX2Rhc2hfc3BhY2VH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3doaXRlX2Rhc2hf
c3BhY2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFz
aF9zcGFjZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndoaXRlLXNwYWNlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2hpdGVfZGFzaF9zcGFjZVNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdoaXRlU3BhY2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJu
IHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fd2hpdGVfZGFzaF9zcGFjZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
CnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNl
dEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aGl0ZV9kYXNoX3NwYWNlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aGl0ZS1zcGFjZSIpOwp9Cgpz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxfZGFzaF9jaGFu
Z2VHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5n
QWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdpbGxDaGFuZ2UpKSkpOwp9
CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dpbGxfZGFz
aF9jaGFuZ2UsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbF9k
YXNoX2NoYW5nZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndpbGwtY2hhbmdlIik7Cn0KCnN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd2lsbF9kYXNoX2NoYW5nZVNldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eVdpbGxDaGFuZ2UsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0
dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFy
YXRpb25fd2lsbF9kYXNoX2NoYW5nZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93aWxsX2Rhc2hfY2hhbmdlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aWxsLWNoYW5nZSIpOwp9
CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9i
cmVha0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V29yZEJyZWFrKSkpKTsK
fQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rh
c2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9k
YXNoX2JyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid29yZC1icmVhayIpOwp9CgpzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9icmVha1NldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdvcmRCcmVhaywgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4g
dHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlv
bl93b3JkX2Rhc2hfYnJlYWssIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRK
U0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9kYXNoX2JyZWFrU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3b3JkLWJyZWFrIik7Cn0KCnN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9kYXNoX3NwYWNpbmdH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRh
cHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nKSkpKTsKfQoK
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rhc2hf
c3BhY2luZywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rh
c2hfc3BhY2luZ0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIndvcmQtc3BhY2luZyIpOwp9CgpzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF9zcGFjaW5nU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1l
bnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENT
U1Byb3BlcnR5V29yZFNwYWNpbmcsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAg
cmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVj
bGFyYXRpb25fd29yZF9kYXNoX3NwYWNpbmcsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46
OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd29yZF9kYXNoX3NwYWNpbmdTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndvcmQtc3BhY2lu
ZyIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX3dvcmRf
ZGFzaF93cmFwR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29y
ZF9kYXNoX3dyYXAsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25fd29y
ZF9kYXNoX3dyYXBHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJ3b3JkLXdyYXAiKTsKfQoKc3RhdGljIGlubGlu
ZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93b3JkX2Rhc2hfd3JhcFNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAg
IEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdvcmRXcmFwLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0
cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9u
X3dvcmRfZGFzaF93cmFwLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewog
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX3dvcmRfZGFzaF93cmFwU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3b3JkLXdyYXAiKTsKfQoKc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0aW5nX2Rhc2hfbW9kZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0
aW9uJiB0aGlzT2JqZWN0KQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpKSkpOwp9CgpKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdfZGFzaF9t
b2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NT
U1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX3dyaXRpbmdfZGFz
aF9tb2RlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAid3JpdGluZy1tb2RlIik7Cn0KCnN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fd3JpdGluZ19kYXNoX21vZGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlXcml0aW5nTW9kZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgfSk7CiAgICByZXR1
cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbl93cml0aW5nX2Rhc2hfbW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0
PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl93cml0aW5nX2Rhc2hfbW9kZVNldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid3JpdGluZy1tb2RlIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fel9kYXNoX2lu
ZGV4R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmlu
Z0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlaSW5kZXgpKSkpOwp9CgpK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX3pfZGFzaF9pbmRl
eCwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NT
dHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl96X2Rhc2hfaW5kZXhH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJ6LWluZGV4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NT
U1N0eWxlRGVjbGFyYXRpb25fel9kYXNoX2luZGV4U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0
dXJuIGltcGwuc2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5WkluZGV4LCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5F
X0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX3pfZGFzaF9pbmRleCwgKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl96
X2Rhc2hfaW5kZXhTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInotaW5kZXgiKTsKfQoKc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzQ1NTU3R5bGVE
ZWNsYXJhdGlvbl9lcHViQ2FwdGlvblNpZGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlKSkpKTsKfQoKSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NT
U3R5bGVEZWNsYXJhdGlvbl9lcHViQ2FwdGlvblNpZGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7
CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZXB1YkNhcHRpb25TaWRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZXB1YkNh
cHRpb25TaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZXB1YkNhcHRpb25TaWRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsK
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0
UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIFdURk1vdmUobmF0
aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YkNhcHRpb25TaWRlLCAoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJD
YXB0aW9uU2lkZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiZXB1YkNhcHRpb25TaWRlIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NT
U1N0eWxlRGVjbGFyYXRpb25fZXB1Ykh5cGhlbnNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpKSkpOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJIeXBoZW5zLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2VwdWJIeXBoZW5zR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZXB1Ykh5cGhl
bnMiKTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHVi
SHlwaGVuc1NldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NT
dHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMsIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKICAgIH0pOwogICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1Ykh5cGhlbnMsIChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1Ykh5cGhlbnNTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVwdWJIeXBo
ZW5zIik7Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YlRleHRDb21iaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0Q29tYmluZSkpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVj
bGFyYXRpb25fZXB1YlRleHRDb21iaW5lLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURl
Y2xhcmF0aW9uX2VwdWJUZXh0Q29tYmluZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJUZXh0Q29tYmlu
ZSIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJU
ZXh0Q29tYmluZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
U1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLCBXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0Q29tYmluZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4
dENvbWJpbmVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgImVwdWJUZXh0Q29tYmluZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NT
dHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewog
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpcywgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0
aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiZXB1YlRleHRFbXBoYXNpcyIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlND
U1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXMsIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwogICAgcmV0dXJuIHRy
dWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25f
ZXB1YlRleHRFbXBoYXNpcywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCnsK
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6c2V0PHNldEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlcHViVGV4dEVtcGhhc2lzIik7Cn0K
CnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRFbXBo
YXNpc0NvbG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NT
U1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvcikpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxl
RGVjbGFyYXRpb25fZXB1YlRleHRFbXBoYXNpc0NvbG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
ewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anND
U1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNDb2xvckdldHRlciwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ImVwdWJUZXh0RW1waGFzaXNDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NT
dHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNDb2xvclNldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5
U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7
CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAg
ICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc0NvbG9yLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJl
dHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xh
cmF0aW9uX2VwdWJUZXh0RW1waGFzaXNDb2xvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzQ29sb3JTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVwdWJU
ZXh0RW1waGFzaXNDb2xvciIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTdHlsZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0KQp7CiAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRv
SlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpKSkpOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0RW1waGFzaXNTdHlsZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lz
U3R5bGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsICJlcHViVGV4dEVtcGhhc2lzU3R5bGUiKTsKfQoKc3RhdGlj
IGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU3R5
bGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBmYWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgV1RGTW92ZShuYXRpdmVW
YWx1ZSkpOwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dEVtcGhhc2lzU3R5bGUsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YlRleHRFbXBoYXNpc1N0eWxlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJlcHViVGV4dEVtcGhhc2lzU3R5bGUiKTsKfQoKc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dE9yaWVudGF0aW9uR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24pKSkp
Owp9CgpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJU
ZXh0T3JpZW50YXRpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmdldDxqc0NTU1N0eWxlRGVjbGFyYXRpb25f
ZXB1YlRleHRPcmllbnRhdGlvbkdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJUZXh0T3JpZW50YXRpb24i
KTsKfQoKc3RhdGljIGlubGluZSBib29sIHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4
dE9yaWVudGF0aW9uU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCnsKICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpOwogICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsKICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0T3JpZW50YXRpb24s
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQp7CiAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OnNldDxzZXRKU0NTU1N0eWxlRGVjbGFyYXRp
b25fZXB1YlRleHRPcmllbnRhdGlvblNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiZXB1YlRleHRPcmllbnRhdGlvbiIpOwp9CgpzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRp
b24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJFTEVBU0VfQU5EX1JF
VFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8
SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQ
cm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtKSkpKTsKfQoKSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dFRyYW5z
Zm9ybSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlND
U1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViVGV4dFRy
YW5zZm9ybUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJUZXh0VHJhbnNmb3JtIik7Cn0KCnN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YlRleHRUcmFuc2Zvcm1TZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSkKewogICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpzZXQ8c2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJUZXh0VHJhbnNmb3JtU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlcHViVGV4
dFRyYW5zZm9ybSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0
aW9uX2VwdWJXb3JkQnJlYWtHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCkKewogICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwogICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51
bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVdv
cmRCcmVhaykpKSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFy
YXRpb25fZXB1YldvcmRCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCnsKICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Z2V0PGpzQ1NTU3R5bGVEZWNsYXJh
dGlvbl9lcHViV29yZEJyZWFrR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZXB1YldvcmRCcmVhayIpOwp9Cgpz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJXb3JkQnJlYWtT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKewogICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7CiAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdIHsKICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlXb3JkQnJlYWssIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgIH0pOwog
ICAgcmV0dXJuIHRydWU7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU0NTU1N0eWxl
RGVjbGFyYXRpb25fZXB1YldvcmRCcmVhaywgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6
c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV29yZEJyZWFrU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlcHViV29yZEJyZWFrIik7
Cn0KCnN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1YldyaXRp
bmdNb2RlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NTU1N0
eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSkp
KSk7Cn0KCkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0NTU1N0eWxlRGVjbGFyYXRpb25fZXB1
YldyaXRpbmdNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKewogICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpnZXQ8anNDU1NTdHlsZURlY2xhcmF0aW9uX2Vw
dWJXcml0aW5nTW9kZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVwdWJXcml0aW5nTW9kZSIpOwp9CgpzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNDU1NTdHlsZURlY2xhcmF0aW9uX2VwdWJXcml0aW5nTW9kZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDU1NTdHlsZURlY2xh
cmF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7CiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZh
bHNlKTsKICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICB9KTsK
ICAgIHJldHVybiB0cnVlOwp9CgpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNDU1NTdHls
ZURlY2xhcmF0aW9uX2VwdWJXcml0aW5nTW9kZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkpCnsKICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNDU1NTdHlsZURlY2xhcmF0aW9u
Pjo6c2V0PHNldEpTQ1NTU3R5bGVEZWNsYXJhdGlvbl9lcHViV3JpdGluZ01vZGVTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVwdWJXcml0aW5n
TW9kZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHlsZURl
Y2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25faXRlbUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgaWYgKFVOTElLRUxZKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgIGF1dG8gaW5kZXggPSBj
b252ZXJ0PElETFVuc2lnbmVkTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgaW1wbC5pdGVtKFdURk1v
dmUoaW5kZXgpKSkpKTsKfQoKSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNs
YXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2l0ZW0sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQp7CiAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmNhbGw8anNDU1NTdHlsZURlY2xhcmF0aW9uUHJv
dG90eXBlRnVuY3Rpb25faXRlbUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1l
LCAiaXRlbSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlWYWx1ZUJvZHkoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgaWYgKFVO
TElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAg
IGF1dG8gcHJvcGVydHkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
aW1wbC5nZXRQcm9wZXJ0eVZhbHVlKFdURk1vdmUocHJvcGVydHkpKSkpKTsKfQoKSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dl
dFByb3BlcnR5VmFsdWUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQp7CiAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbj46OmNhbGw8anNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25f
Z2V0UHJvcGVydHlWYWx1ZUJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAi
Z2V0UHJvcGVydHlWYWx1ZSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlQcmlvcml0
eUJvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCnsKICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKICAgIGF1dG8gcHJvcGVydHkgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5n
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGltcGwuZ2V0UHJvcGVydHlQcmlvcml0eShXVEZNb3Zl
KHByb3BlcnR5KSkpKSk7Cn0KCkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVj
bGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9nZXRQcm9wZXJ0eVByaW9yaXR5LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKewogICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpjYWxsPGpzQ1NTU3R5
bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5UHJpb3JpdHlCb2R5Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImdldFByb3BlcnR5UHJpb3JpdHkiKTsK
fQoKc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
blByb3RvdHlwZUZ1bmN0aW9uX3NldFByb3BlcnR5Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcykKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKCpsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwogICAgYXV0byBwcm9wZXJ0eSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgYXV0byB2YWx1
ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETERPTVN0cmlu
Zz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICBhdXRv
IHByaW9yaXR5ID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5n
KCkgOiBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExET01TdHJp
bmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCkpOwogICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwogICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBpbXBsLnNldFByb3BlcnR5KFdURk1vdmUocHJvcGVydHkpLCBXVEZNb3Zl
KHZhbHVlKSwgV1RGTW92ZShwcmlvcml0eSkpKTsKICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Cn0KCkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVj
bGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9zZXRQcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCnsKICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Y2FsbDxqc0NTU1N0eWxlRGVjbGFy
YXRpb25Qcm90b3R5cGVGdW5jdGlvbl9zZXRQcm9wZXJ0eUJvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAic2V0UHJvcGVydHkiKTsKfQoKc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92
ZVByb3BlcnR5Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNDU1NTdHls
ZURlY2xhcmF0aW9uPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKewogICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
IGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKCpsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICBpZiAoVU5MSUtFTFkoY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgYXV0byBwcm9wZXJ0
eSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpOwogICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLnJlbW92ZVByb3BlcnR5KFdURk1vdmUocHJvcGVydHkpKSkpKTsKfQoKSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92
ZVByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKewogICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFy
YXRpb24+OjpjYWxsPGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX3JlbW92
ZVByb3BlcnR5Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJyZW1vdmVQ
cm9wZXJ0eSIpOwp9CgpzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHls
ZURlY2xhcmF0aW9uUHJvdG90eXBlRnVuY3Rpb25fZ2V0UHJvcGVydHlTaG9ydGhhbmRCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQp7CiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8g
U3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpKTsKICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGltcGwuZ2V0UHJvcGVydHlTaG9ydGhhbmQoV1RGTW92ZShwcm9wZXJ0eU5hbWUpKSkp
KTsKfQoKSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3Rv
dHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5U2hvcnRoYW5kLCAoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKewogICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRpb24+OjpjYWxsPGpzQ1NTU3R5bGVEZWNsYXJhdGlv
blByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3BlcnR5U2hvcnRoYW5kQm9keT4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYWxsRnJhbWUsICJnZXRQcm9wZXJ0eVNob3J0aGFuZCIpOwp9CgpzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90eXBl
RnVuY3Rpb25faXNQcm9wZXJ0eUltcGxpY2l0Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNDU1NTdHlsZURlY2xhcmF0aW9uPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cykKewogICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
YXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEJvb2xl
YW4+KGltcGwuaXNQcm9wZXJ0eUltcGxpY2l0KFdURk1vdmUocHJvcGVydHlOYW1lKSkpKSk7Cn0K
CkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVG
dW5jdGlvbl9pc1Byb3BlcnR5SW1wbGljaXQsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQp7CiAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbj46OmNhbGw8anNDU1NTdHlsZURlY2xhcmF0aW9uUHJvdG90
eXBlRnVuY3Rpb25faXNQcm9wZXJ0eUltcGxpY2l0Qm9keT4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYWxsRnJhbWUsICJpc1Byb3BlcnR5SW1wbGljaXQiKTsKfQoKc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dl
dFByb3BlcnR5Q1NTVmFsdWVCb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U0NTU1N0eWxlRGVjbGFyYXRpb24+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQp7CiAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExO
dWxsYWJsZTxJRExJbnRlcmZhY2U8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKFdURk1vdmUocHJvcGVydHlOYW1lKSkpKSk7Cn0KCkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihqc0NTU1N0eWxlRGVjbGFyYXRpb25Qcm90b3R5cGVGdW5jdGlvbl9nZXRQcm9wZXJ0eUNT
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKewogICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU0NTU1N0eWxlRGVjbGFyYXRp
b24+OjpjYWxsPGpzQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvdHlwZUZ1bmN0aW9uX2dldFByb3Bl
cnR5Q1NTVmFsdWVCb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgImdldFBy
b3BlcnR5Q1NTVmFsdWUiKTsKfQoKSlNDOjpJc29TdWJzcGFjZSogSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCnsKICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKICAgIGF1dG8m
IHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CiAgICBpZiAoYXV0byogc3BhY2UgPSBz
cGFjZXMubV9zdWJzcGFjZUZvckNTU1N0eWxlRGVjbGFyYXRpb24uZ2V0KCkpCiAgICAgICAgcmV0
dXJuIHNwYWNlOwogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24+IHx8ICFKU0NTU1N0eWxlRGVj
bGFyYXRpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOwogICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jh
c2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU0NTU1N0eWxlRGVjbGFyYXRpb24+
KQogICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IG1ha2VV
bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDU1NTdHlsZURlY2xhcmF0aW9uKTsKICAg
IGVsc2UKICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvckNTU1N0eWxlRGVjbGFyYXRpb24gPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24pOwogICAgYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvckNTU1N0eWxlRGVjbGFyYXRpb24uZ2V0KCk7CklHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCklHTk9SRV9XQVJOSU5HU19CRUdJ
TigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQogICAgdm9pZCAoKm15VmlzaXRPdXRwdXRDb25zdHJh
aW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKICAgIHZvaWQgKCpqc0NlbGxWaXNpdE91dHB1
dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNDOjpKU0Nl
bGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CiAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFp
bnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQogICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CklHTk9SRV9XQVJOSU5HU19FTkQK
SUdOT1JFX1dBUk5JTkdTX0VORAogICAgcmV0dXJuIHNwYWNlOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgp2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRDaGlsZHJlbkltcGwo
SlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQp7CiAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOwogICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgIHRoaXNPYmplY3QtPnZpc2l0QWRkaXRpb25hbENoaWxk
cmVuKHZpc2l0b3IpOwp9CgpERUZJTkVfVklTSVRfQ0hJTERSRU4oSlNDU1NTdHlsZURlY2xhcmF0
aW9uKTsKCnRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CnZvaWQgSlNDU1NTdHlsZURlY2xhcmF0
aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRv
cikKewogICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24q
PihjZWxsKTsKICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgIEJhc2U6OnZpc2l0T3V0cHV0Q29uc3RyYWludHModGhpc09iamVjdCwgdmlzaXRvcik7
CiAgICB0aGlzT2JqZWN0LT52aXNpdEFkZGl0aW9uYWxDaGlsZHJlbih2aXNpdG9yKTsKfQoKdGVt
cGxhdGUgdm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnZpc2l0T3V0cHV0Q29uc3RyYWludHMo
SlNDZWxsKiwgQWJzdHJhY3RTbG90VmlzaXRvciYpOwp0ZW1wbGF0ZSB2b2lkIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyhKU0NlbGwqLCBTbG90VmlzaXRvciYp
Owp2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBI
ZWFwQW5hbHl6ZXImIGFuYWx5emVyKQp7CiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbio+KGNlbGwpOwogICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVj
dEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CiAgICBpZiAodGhpc09iamVj
dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9y
Q2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnVybCgpLnN0cmluZygpKTsKICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsK
fQoKYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBBYnN0cmFjdFNs
b3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQp7CiAgICBhdXRvKiBqc0NT
U1N0eWxlRGVjbGFyYXRpb24gPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpOwogICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoJmpzQ1NT
U3R5bGVEZWNsYXJhdGlvbi0+d3JhcHBlZCgpKTsKICAgIGlmIChVTkxJS0VMWShyZWFzb24pKQog
ICAgICAgICpyZWFzb24gPSAiUmVhY2hhYmxlIGZyb20ganNDU1NTdHlsZURlY2xhcmF0aW9uIjsK
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKfQoKdm9pZCBKU0NT
U1N0eWxlRGVjbGFyYXRpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCnsKICAgIGF1dG8qIGpzQ1NTU3R5bGVEZWNsYXJhdGlv
biA9IHN0YXRpY19jYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+
KGNvbnRleHQpOwogICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1N0eWxlRGVjbGFyYXRp
b24tPndyYXBwZWQoKSwganNDU1NTdHlsZURlY2xhcmF0aW9uKTsKfQoKSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIGltcGwpCnsKICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPENTU1N0eWxlRGVjbGFyYXRpb24+KGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSk7Cn0KCkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENTU1N0eWxl
RGVjbGFyYXRpb24mIGltcGwpCnsKICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW1wbCk7Cn0KCkNTU1N0eWxlRGVjbGFyYXRpb24qIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCnsK
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRp
b24qPih2bSwgdmFsdWUpKQogICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAg
cmV0dXJuIG51bGxwdHI7Cn0KCn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425080</attachid>
            <date>2021-04-02 21:48:21 -0700</date>
            <delta_ts>2021-04-03 12:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222518-20210402214820.patch</filename>
            <type>text/plain</type>
            <size>119058</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTAyICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6
ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFj
Y2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oOgorICAgICAgICBUdXJuIG9uIEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElF
U19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OLCBub3cgdGhhdCB3ZSBoYXZlIGl0IHVzaW5nIHNo
YXJlZAorICAgICAgICBkZWxlZ2F0aW5nIHN5bnRoZXRpYyBhdHRyaWJ1dGVzLgorCiAyMDIxLTA0
LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
YWJsZSBQcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05lYXI2MEZQU0VuYWJsZWQgYnkgZGVmYXVs
dApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3
LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9Q
RVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCi0jZGVmaW5lIEVOQUJMRV9BVFRSSUJV
VEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OIDAKKyNkZWZpbmUg
RU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJ
T04gMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw5NyBAQAorMjAyMS0wNC0wMiAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5
IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0
eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtaW1wbGVtZW50
IHByb3BlciAobm90IHVzaW5nIG5hbWVkLWdldHRlcnMpIHN1cHBvcnQgZm9yIHRoZSBDU1NTdHls
ZURlY2xhcmF0aW9uIGJpbmRpbmdzCisgICAgICAgIHVzaW5nIGEgbmV3IERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUgZXh0ZW5kZWQgYXR0dHJpYnV0ZSB3aGljaCBhbGxvd3MgSURM
IGF0dHJpYnV0ZXMKKyAgICAgICAgdG8gc2hhcmUgYSBjdXN0b20gZ2V0dGVyIC8gc2V0dGVyIGlt
cGxlbWVudGF0aW9uIGFuZCBkZWxlZ2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbiB0byBpdC4gV2hl
bgorICAgICAgICB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoZSBzeW50aGV0aWMgYXR0cmli
dXRlJ3MgaW1wbGVtZW50YXRpb24gaXMgcGFzc2VkIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eQorICAg
ICAgICBuYW1lIHNvIGl0IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBpdC4K
KworICAgICAgICBXZSB1c2UgdGhpcyBmb3IgQ1NTU3R5bGVEZWNsYXJhdGlvbiBieSBicmVha2lu
ZyB0aGUgaHVnZSBsaXN0IG9mIGdlbmVyYXRlZCBwcm9wZXJ0aWVzIGludG8KKyAgICAgICAgZm91
ciBncm91cHMsIGVhY2ggd2l0aCB0aGVpciBvd24gc3ludGhldGljIGF0dHJpYnV0ZS4gVGhlIGdy
b3VwcyBhcmUgYmFzZWQgb24gdGhlIGRpZmZlcmVudAorICAgICAgICB0cmFuc2Zvcm1hdGlvbiBy
dWxlcyBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGU6OnNldFBhc3NpbmdQcm9wZXJ0eU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXRQYXNzaW5nUHJvcGVydHlO
YW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOgorICAgICAgICAoR2V0QXR0cmlidXRlU2V0
dGVyTmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdl
bmVyYXRlU2hhcmVkU3ludGhldGljQXR0cmlidXRlRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRy
aWJ1dGVHZXR0ZXJBbmRTZXR0ZXJEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJp
YnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0
ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKE1ha2VTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgor
ICAgICAgICAoQ29tcHV0ZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMpOgorICAgICAgICAoTmVl
ZHNEZWxlZ2F0aW9uVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgorICAgICAgICAoR2V0U2hh
cmVkU3ludGhldGljQXR0cmlidXRlKToKKyAgICAgICAgKE5lZWRzUHJvcGVydHlOYW1lUGFzc2Vk
VG9BdHRyaWJ1dGVCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9i
YWxDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDU1NQcm9wZXJ0eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29y
ZTo6SURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+
OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
X3NoYXJlZEF0dHJpYnV0ZTFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZTo6YW5hbHl6ZUhlYXApOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
OjpzdWJzcGFjZUZvcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6d3JhcHBlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29u
c3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVy
dHlDb25zdHJ1Y3RvckdldHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
LmlkbDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlUmVxdWlyaW5n
Q29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExB
dHRyaWJ1dGVSZXF1aXJpbmdOb0NvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZv
ckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JXZWJL
aXRDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0
aW9uOjpwcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlW
YWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9tYWtl
cHJvcC5wbDoKKwogMjAyMS0wNC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBQZW5kaW5nSW1hZ2VCaXRtYXAgZ2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBz
Y3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMy
LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CiBjbGFzcyBJRExBdHRyaWJ1dGUgewog
cHVibGljOgogICAgIHVzaW5nIFNldHRlciA9IGJvb2woSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Q2xhc3MmLCBKU0M6OkpTVmFsdWUpOworICAgIHVzaW5nIFNldHRlclBhc3NpbmdQcm9wZXJ0eU5h
bWUgPSBib29sKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiAgICAgdXNpbmcgU3RhdGljU2V0dGVyID0gYm9vbChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpT
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xhc3MmKTsKKyAgICB1c2luZyBHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0NsYXNzJiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHVzaW5nIFN0YXRpY0dldHRlciA9IEpT
Qzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAgICAgCiAgICAgc3RhdGljIEpTQ2xh
c3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwpAQCAt
NTMsNyArNTUsMjQgQEAgcHVibGljOgogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0aCBgc2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBs
aWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxh
bWJkYS4KKyAgICB0ZW1wbGF0ZTxTZXR0ZXJQYXNzaW5nUHJvcGVydHlOYW1lIHNldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6VGhyb3c+CisgICAgc3RhdGljIGJvb2wgc2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKworICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJv
dykKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVy
VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZv
KCksIGF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVOYW1lKSkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPFN0YXRpY1NldHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
IHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRp
YyBib29sIHNldFN0YXRpYyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpAQCAtODMsNyArMTAyLDMyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNDOjpKU1ZhbHVlOjpl
bmNvZGUoZ2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0KSkpKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0
aCBgZ2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBsaWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxh
dGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxhbWJkYS4KKyAgICB0ZW1wbGF0ZTxHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lIGdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxk
VGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CisgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgZ2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkpOworCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgeworICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNDbGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6
OmVuY29kZShnZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIGF0dHJpYnV0
ZU5hbWUpKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJv
cigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRy
aWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhy
b3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UpCisgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCByZWplY3RQcm9taXNlV2l0
aEdldHRlclR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCksIGF0
dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpT
Qzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgYXR0cmlidXRlTmFtZSkpKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB0ZW1wbGF0ZTxT
dGF0aWNHZXR0ZXIgZ2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBnZXRTdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xODQwLDYgKzE4NDAsNyBAQCBz
dWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKSA9IEBfOwogCisgICAgcmV0dXJuIEdldEF0dHJpYnV0ZUdldHRlck5h
bWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpIGlmIElzSlNCdWlsdGlu
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRyaWJ1dGVPckZ1
bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiBNYW5nbGVB
dHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSAuICJDb25zdHJ1Y3RvciIg
aWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwpA
QCAtMTg1MCw2ICsxODUxLDcgQEAgc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIHsKICAgICBt
eSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKIAorICAgIHJldHVy
biBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsIEdldFNoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgaWYgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZX07CiAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKSBpZiBJc0pTQnVpbHRp
bigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRy
aWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0
YXRpYzsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xh
c3NOYW1lKSAuIE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPm5hbWUp
OwpAQCAtNDI4MCwyNCArNDI4MiwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUigke2NvbnN0cnVjdG9yR2V0dGVyfSk7XG4iKTsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9fSkgeworICAgICAgICAgICAg
ICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29u
dGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OwogCi0g
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtcbiIp
OwotICAgICAgICAgICAgdW5sZXNzIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKSkgewotICAgICAgICAg
ICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsbHlSZWFkV3JpdGV9OwotICAgICAgICAgICAgICAgIGlmICgk
cmVhZFdyaXRlQ29uZGl0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHJlYWRXcml0
ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJHJlYWRXcml0ZUNvbmRpdGlvbmFsKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtyZWFkV3JpdGVDb25kaXRpb25h
bFN0cmluZ31cbiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBteSAkc2V0
dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKCR7c2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0
dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuIik7CkBAIC00ODc2LDcgKzQ4NzAsMTUgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAorICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgICAgICBHZW5l
cmF0ZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGlu
dGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKKyAg
ICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKKwogICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CiAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbihcQGlt
cGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICB9CkBA
IC01MjAwLDYgKzUyMDIsNzAgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRp
ZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQog
CitzdWIgR2VuZXJhdGVTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVEZWZpbml0aW9uCit7CisgICAg
bXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBA
XzsKKworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiKTsKKwor
ICAgIG15ICRjb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nv
bmRpdGlvbmFsfTsKKworICAgIG15ICRhdHRyaWJ1dGVHZXR0ZXJOYW1lID0gR2V0QXR0cmlidXRl
R2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICBteSAk
YXR0cmlidXRlR2V0dGVyQm9keU5hbWUgPSAkYXR0cmlidXRlR2V0dGVyTmFtZSAuICJCb2R5IjsK
KworICAgIG15ICgkZ2V0dGVyQmFzZUZ1bmN0aW9uTmFtZSwgQGdldHRlckFyZ3VtZW50cykgPSAk
Y29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFj
ZS0+dHlwZS0+bmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgbXkgJGdldHRlckZ1bmN0aW9uTmFtZSA9
IEdldEZ1bGx5UXVhbGlmaWVkSW1wbGVtZW50YXRpb25DYWxsTmFtZSgkaW50ZXJmYWNlLCAkYXR0
cmlidXRlLCAkZ2V0dGVyQmFzZUZ1bmN0aW9uTmFtZSwgImltcGwiLCAkY29uZGl0aW9uYWwpOwor
CisgICAgIyBEZWxlZ2F0ZWQgcHJvcGVydGllcyBhbHdheXMgZ2V0IHRoZSBwcm9wZXJ0eSBuYW1l
IGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgYXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGRpZmZlcmVudGlh
dGUKKyAgICAjIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4KKyAgICB1bnNoaWZ0KEBnZXR0ZXJBcmd1
bWVudHMsICJwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcoYXR0cmlidXRlTmFtZSkiKTsKKyAgICAg
ICAgICAgIAorICAgIG15ICR0b0pTRXhwcmVzc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVm
ZXJlbmNlcygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiJHtnZXR0ZXJGdW5jdGlvbk5hbWV9KCIg
LiBqb2luKCIsICIsIEBnZXR0ZXJBcmd1bWVudHMpIC4gIikiLCAiKnRoaXNPYmplY3QuZ2xvYmFs
T2JqZWN0KCkiKTsKKworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSAke2F0dHJpYnV0ZUdldHRlckJvZHlOYW1lfShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgYXR0cmli
dXRlTmFtZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTtcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKCR7dG9K
U0V4cHJlc3Npb259KSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwor
CisgICAgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmaW5pdGlvbigkb3V0cHV0
QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUsICRhdHRyaWJ1dGVHZXR0
ZXJOYW1lLCAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUsICRjb25kaXRpb25hbCk7CisKKyAgICBt
eSAkYXR0cmlidXRlU2V0dGVyTmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgbXkgJGF0dHJpYnV0ZVNldHRlckJvZHlO
YW1lID0gJGF0dHJpYnV0ZVNldHRlck5hbWUgLiAiQm9keSI7CisKKyAgICBteSAoJHNldHRlckJh
c2VGdW5jdGlvbk5hbWUsIEBzZXR0ZXJBcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRl
ckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUsICRhdHRy
aWJ1dGUpOworICAgIHB1c2goQHNldHRlckFyZ3VtZW50cywgUGFzc0FyZ3VtZW50RXhwcmVzc2lv
bigibmF0aXZlVmFsdWUiLCAkYXR0cmlidXRlKSk7CisgICAgbXkgJHNldHRlckZ1bmN0aW9uTmFt
ZSA9IEdldEZ1bGx5UXVhbGlmaWVkSW1wbGVtZW50YXRpb25DYWxsTmFtZSgkaW50ZXJmYWNlLCAk
YXR0cmlidXRlLCAkc2V0dGVyQmFzZUZ1bmN0aW9uTmFtZSwgImltcGwiLCAkY29uZGl0aW9uYWwp
OworICAgIEFkZEFkZGl0aW9uYWxBcmd1bWVudHNGb3JJbXBsZW1lbnRhdGlvbkNhbGwoXEBzZXR0
ZXJBcmd1bWVudHMsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJpbXBsIiwgImxleGljYWxHbG9i
YWxPYmplY3QiLCAiIiwgInRoaXNPYmplY3QiKTsKKworICAgICMgRGVsZWdhdGVkIHByb3BlcnRp
ZXMgYWx3YXlzIGdldCB0aGUgcHJvcGVydHkgbmFtZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIGFz
IGl0IGlzIG5lY2Vzc2FyeSB0byBkaWZmZXJlbnRpYXRlCisgICAgIyBpbiB0aGUgaW1wbGVtZW50
YXRpb24uCisgICAgdW5zaGlmdChAc2V0dGVyQXJndW1lbnRzLCAicHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKGF0dHJpYnV0ZU5hbWUpIik7CisKKyAgICBteSAkZXhjZXB0aW9uVGhyb3dlciA9IEdl
dEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAg
bXkgJHRvTmF0aXZlRXhwcmVzc2lvbiA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXR0
cmlidXRlLCAidmFsdWUiLCAkY29uZGl0aW9uYWwsICImbGV4aWNhbEdsb2JhbE9iamVjdCIsICJs
ZXhpY2FsR2xvYmFsT2JqZWN0IiwgInRoaXNPYmplY3QiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2Jq
ZWN0KCkiLCAkZXhjZXB0aW9uVGhyb3dlcik7CisKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJz
dGF0aWMgaW5saW5lIGJvb2wgJHthdHRyaWJ1dGVTZXR0ZXJCb2R5TmFtZX0oSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsICR7Y2xhc3NOYW1lfSYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpXG4iKTsKKyAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtc
biIpOworCisgICAgR2VuZXJhdGVDdXN0b21FbGVtZW50UmVhY3Rpb25zU3RhY2tJZk5lZWRlZCgk
b3V0cHV0QXJyYXksICRhdHRyaWJ1dGUsICJsZXhpY2FsR2xvYmFsT2JqZWN0Iik7CisKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAk
e3RvTmF0aXZlRXhwcmVzc2lvbn07XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKKyAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNl
c3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHtcbiIpOworICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuICR7c2V0dGVyRnVuY3Rpb25OYW1lfSgi
IC4gam9pbigiLCAiLCBAc2V0dGVyQXJndW1lbnRzKSAuICIpO1xuIik7CisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIH0pO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiB0cnVlO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKKworICAg
IEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24oJG91dHB1dEFycmF5
LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlLCAkYXR0cmlidXRlU2V0dGVyTmFt
ZSwgJGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lLCAkY29uZGl0aW9uYWwpOworfQorCiBzdWIgR2Vu
ZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvbgogewogICAgIG15ICgkb3V0cHV0QXJy
YXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUsICRhdHRyaWJ1dGVHZXR0ZXJC
b2R5TmFtZSwgJGNvbmRpdGlvbmFsKSA9IEBfOwpAQCAtNTI2OSwxMyArNTMzNSw2IEBAIHN1YiBH
ZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVj
dG9yVHlwZSAuICI6OiR7Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOwogICAgICAgICB9Ci0g
ICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9
KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFtZXMuaCJ9ID0gMTsKLSAg
ICAgICAgbXkgJHByb3BlcnR5SUQgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
U1NQcm9wZXJ0eX07Ci0KLSAgICAgICAgbXkgJHRvSlNFeHByZXNzaW9uID0gTmF0aXZlVG9KU1Zh
bHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJpbXBsLmdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0pIiwgIip0aGlzT2JqZWN0
Lmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoJHt0b0pTRXhwcmVz
c2lvbn0pKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1f
IiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiLmdldCgpKVxuIik7CkBAIC01MzI0LDYgKzUzODMsNyBA
QCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgCiAgICAgbXkg
JGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lID0gImdldCI7CiAgICAgJGNhbGxBdHRyaWJ1dGVHZXR0
ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgICRjYWxsQXR0
cmlidXRlR2V0dGVyTmFtZSAuPSAiUGFzc2luZ1Byb3BlcnR5TmFtZSIgaWYgTmVlZHNQcm9wZXJ0
eU5hbWVQYXNzZWRUb0F0dHJpYnV0ZUJvZHkoJGF0dHJpYnV0ZSk7CiAgICAgCiAgICAgbXkgQHRl
bXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgJGF0
dHJpYnV0ZUdldHRlckJvZHlOYW1lKTsKQEAgLTUzNDEsNiArNTQwMSwyOSBAQCBzdWIgR2VuZXJh
dGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
fVxuXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFy
YXRpb24KK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
YXR0cmlidXRlKSA9IEBfOworCisgICAgcmV0dXJuIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpOworCisgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CisgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtcbiIpOworICAgIHVubGVz
cyAoSXNSZWFkb25seSgkYXR0cmlidXRlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3Rv
clR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKKyAgICAgICAgbXkgJHJlYWRXcml0ZUNvbmRpdGlv
bmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWxseVJlYWRX
cml0ZX07CisgICAgICAgIGlmICgkcmVhZFdyaXRlQ29uZGl0aW9uYWwpIHsKKyAgICAgICAgICAg
IG15ICRyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRyZWFkV3JpdGVDb25kaXRpb25h
bCk7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjaWYgJHtyZWFkV3JpdGVDb25k
aXRpb25hbFN0cmluZ31cbiIpOworICAgICAgICB9CisgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRB
dHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NF
VFRFUigke3NldHRlcn0pO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRp
ZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOworICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKK30KKwogc3ViIEdlbmVy
YXRlQXR0cmlidXRlR2V0dGVyRGVmaW5pdGlvbgogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87CkBAIC01NDE5LDIxICs1NTAy
LDYgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpbwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJnRoaXNPYmplY3Qs
IHZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZW5zdXJlU3Rp
bGxBbGl2ZUhlcmUodmFsdWUpO1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiB0cnVlO1xuIik7Ci0gICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1By
b3BlcnR5TmFtZXMuaCJ9ID0gMTsKLQotICAgICAgICBteSAkcHJvcGVydHlJRCA9ICRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NTU1Byb3BlcnR5fTsKLQotICAgICAgICBteSAkZXhj
ZXB0aW9uVGhyb3dlciA9IEdldEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIoJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7Ci0gICAgICAgIG15ICR0b05hdGl2ZUV4cHJlc3Npb24gPSBKU1ZhbHVlVG9O
YXRpdmUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9LCAiJmxleGljYWxHbG9iYWxPYmplY3QiLCAibGV4
aWNhbEdsb2JhbE9iamVjdCIsICJ0aGlzT2JqZWN0IiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpIiwgJGV4Y2VwdGlvblRocm93ZXIpOwotCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAke3RvTmF0aXZlRXhwcmVz
c2lvbn07XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0ge1xuIik7Ci0gICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eSR7cHJvcGVydHlJRH0sIFdURk1vdmUobmF0aXZlVmFsdWUpLCBmYWxzZSk7XG4i
KTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH0pO1xuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgIH0gZWxzaWYgKCRp
c1JlcGxhY2VhYmxlKSB7CiAgICAgICAgIG15ICRpZCA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBwcm9w
ZXJ0eS5cbiIpOwpAQCAtNTUyMSw3ICs1NTg5LDggQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyVHJhbXBvbGluZURlZgogICAgIAogICAgIG15ICRjYWxsQXR0cmlidXRlU2V0dGVyTmFtZSA9
ICJzZXQiOwogICAgICRjYWxsQXR0cmlidXRlU2V0dGVyTmFtZSAuPSAiU3RhdGljIiBpZiAkYXR0
cmlidXRlLT5pc1N0YXRpYzsKLSAgICAKKyAgICAkY2FsbEF0dHJpYnV0ZVNldHRlck5hbWUgLj0g
IlBhc3NpbmdQcm9wZXJ0eU5hbWUiIGlmIE5lZWRzUHJvcGVydHlOYW1lUGFzc2VkVG9BdHRyaWJ1
dGVCb2R5KCRhdHRyaWJ1dGUpOworCiAgICAgbXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwog
ICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVycywgJGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lKTsK
ICAgICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMsICJDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
UmV0dXJuRWFybHkiKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lM
ZW5pZW50VGhpc307CkBAIC01NTM5LDcgKzU2MDgsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVT
ZXR0ZXJEZWZpbml0aW9uCiAgICAgcmV0dXJuIGlmIElzUmVhZG9ubHkoJGF0dHJpYnV0ZSk7CiAg
ICAgcmV0dXJuIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRl
LT50eXBlKTsKICAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7Ci0gICAgCisKICAgICBteSAkY29uZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWwpOwpAQCAtODA0NSw0ICs4
MTE0LDczIEBAIHN1YiBHZW5lcmF0ZUN1c3RvbUVsZW1lbnRSZWFjdGlvbnNTdGFja0kKICAgICB9
CiB9CiAKK3N1YiBNYWtlU2hhcmVkU3ludGhldGljQXR0cmlidXRlCit7CisgICAgbXkgKCRuYW1l
LCAkYmFzZUF0dHJpYnV0ZSkgPSBAXzsKKworICAgIG15ICRzaGFyZWRBdHRyaWJ1dGUgPSBJRExB
dHRyaWJ1dGUtPm5ldygpOworICAgICRzaGFyZWRBdHRyaWJ1dGUtPm5hbWUoJG5hbWUpOworICAg
ICRzaGFyZWRBdHRyaWJ1dGUtPnR5cGUoSURMUGFyc2VyOjpjbG9uZVR5cGUoJGJhc2VBdHRyaWJ1
dGUtPnR5cGUpKTsKKyAgICBJRExQYXJzZXI6OmNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJHNoYXJl
ZEF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkYmFzZUF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzKTsKKworICAgIGRlbGV0ZSAkc2hhcmVkQXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKKyAgICAkc2hhcmVk
QXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZX0gPSAxOworCisgICAgcmV0dXJuICRzaGFyZWRBdHRyaWJ1dGU7Cit9CisKK3N1YiBDb21wdXRl
U2hhcmVkU3ludGhldGljQXR0cmlidXRlcworeworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
KworICAgICMgVXNlIGEgZmFrZSBleHRlbmRlZCBhdHRyaWJ1dGUsIFN5bnRoZXRpY0lETEF0dHJp
YnV0ZXMsIHRvIHN0b3JlIHRoZSBuZXcgYXR0cmlidXRlcworICAgIGlmIChub3QgZXhpc3RzICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9KSB7
CisgICAgICAgIG15ICVzeW50aGV0aWNJRExBdHRyaWJ1dGVzID0gKCApOworICAgICAgICBteSBA
YXR0cmlidXRlcyA9ICgpOworICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVy
ZmFjZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSkgeworICAg
ICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CisgICAgICAgICAgICAgICAgaWYg
KG5vdCAkc3ludGhldGljSURMQXR0cmlidXRlc3skbmFtZX0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJHN5bnRoZXRpY0F0dHJpYnV0ZSA9IE1ha2VTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUo
JG5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgICAgICAkc3ludGhldGljSURMQXR0
cmlidXRlc3skbmFtZX0gPSAxOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBhdHRyaWJ1dGVz
LCAkc3ludGhldGljQXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U3lu
dGhldGljSURMQXR0cmlidXRlc30gPSBcQGF0dHJpYnV0ZXM7CisgICAgfQorCit9CisKK3N1YiBO
ZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICRpbnRl
cmZhY2UgPSBzaGlmdDsKKworICAgIENvbXB1dGVTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzKCRp
bnRlcmZhY2UpOworCisgICAgcmV0dXJuIHNjYWxhciBAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9fTsKK30KKworc3ViIEdldFNoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBf
OworCisgICAgQ29tcHV0ZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMoJGludGVyZmFjZSk7CisK
KyAgICBmb3JlYWNoIG15ICRzeW50aGV0aWNBdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgIGlmICgk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlfSBlcSAkc3ludGhldGljQXR0cmlidXRlLT5uYW1lKCkpIHsKKyAgICAgICAgICAg
IHJldHVybiAkc3ludGhldGljQXR0cmlidXRlOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHJldHVybiB1bmRlZjsKK30KKworc3ViIE5lZWRzUHJvcGVydHlOYW1lUGFzc2VkVG9BdHRyaWJ1
dGVCb2R5Cit7CisgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OworICAgIAorICAgIHJldHVybiAk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZX07Cit9CisKIDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAg
LTM4LDEwICszOCw2IEBACiAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9jdXN0b20tZWxlbWVudHMuaHRtbCNjZXJlYWN0aW9ucyIK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIkNTU1Byb3BlcnR5IjogewotICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCi0gICAgICAgICAgICAi
dmFsdWVzIjogWyIqIl0KLSAgICAgICAgfSwKICAgICAgICAgIkNhY2hlZEF0dHJpYnV0ZSI6IHsK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAgICAgICAgIH0s
CkBAIC0xNTQsNiArMTUwLDkgQEAKICAgICAgICAgIkRlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eSI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAg
IH0sCisgICAgICAgICJEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIjogeworICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KKyAgICAgICAgfSwKICAg
ICAgICAgIkRpc2FibGVkQnlRdWlyayI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQi
OiBbImludGVyZmFjZSIsICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJh
dGlvbiIsICJjb25zdGFudCIsICJkaWN0aW9uYXJ5LW1lbWJlciIsICJpbmNsdWRlcyJdLAogICAg
ICAgICAgICAgInZhbHVlcyI6IFsiKiJdLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9i
YWxDb25zdHJ1Y3RvcnMuaWRsCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNiBAQAogcGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2Jh
bE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yIFRlc3RD
RVJlYWN0aW9uczsKICAgICBhdHRyaWJ1dGUgVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25z
dHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjsKLSAgICBhdHRyaWJ1dGUgVGVzdENT
U1Byb3BlcnR5Q29uc3RydWN0b3IgVGVzdENTU1Byb3BlcnR5OwogICAgIGF0dHJpYnV0ZSBUZXN0
Q2FsbFRyYWNlckNvbnN0cnVjdG9yIFRlc3RDYWxsVHJhY2VyOwogICAgIFtDb25kaXRpb25hbD1U
RVNUX0NPTkRJVElPTkFMXSBhdHRyaWJ1dGUgVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0
b3IgVGVzdENhbGxiYWNrSW50ZXJmYWNlOwogICAgIGF0dHJpYnV0ZSBUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3I7CkBAIC05LDYgKzgsNyBAQCBwYXJ0aWFsIGludGVyZmFjZSBUZXN0R2xvYmFsT2JqZWN0
IHsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29u
c3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlOwogICAgIGF0dHJp
YnV0ZSBUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1Y3RvciBUZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXQ7CiAgICAgYXR0cmlidXRlIFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29u
c3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWw7CisgICAgYXR0cmlidXRlIFRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IgVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU7CiAgICAgYXR0cmlidXRlIFRlc3REb21haW5T
ZWN1cml0eUNvbnN0cnVjdG9yIFRlc3REb21haW5TZWN1cml0eTsKICAgICBhdHRyaWJ1dGUgVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciBUZXN0RXZlbnRDb25zdHJ1Y3RvcjsKICAgICBh
dHRyaWJ1dGUgVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IgVGVzdEV2ZW50VGFyZ2V0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVu
ZGVuY2llcy5kZXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI3NTQ1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRl
bmNpZXMuZGVwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw2IEBAIFdlYkRPTVRlc3RDRVJl
YWN0aW9ucy5oOiAKIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBET01UZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKIFdlYkRPTVRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
Lmg6IAotSlNUZXN0Q1NTUHJvcGVydHkuaDogCi1ET01UZXN0Q1NTUHJvcGVydHkuaDogCi1XZWJE
T01UZXN0Q1NTUHJvcGVydHkuaDogCiBKU1Rlc3RDYWxsVHJhY2VyLmg6IAogRE9NVGVzdENhbGxU
cmFjZXIuaDogCiBXZWJET01UZXN0Q2FsbFRyYWNlci5oOiAKQEAgLTc2LDYgKzczLDkgQEAgV2Vi
RE9NVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Lmg6IAogSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5oOiAKIERPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmg6IAogV2ViRE9N
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaDogCitKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlLmg6IAorRE9NVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUuaDogCitXZWJET01UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5oOiAKIEpTVGVzdERlcml2ZWREaWN0aW9uYXJ5Lmg6IAogRE9NVGVzdERlcml2ZWREaWN0aW9u
YXJ5Lmg6IAogV2ViRE9NVGVzdERlcml2ZWREaWN0aW9uYXJ5Lmg6IApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0
eS5pZGwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLXR5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOwotCi1bCi0gICAg
RXhwb3NlZD1UZXN0R2xvYmFsT2JqZWN0Ci1dIGludGVyZmFjZSBUZXN0Q1NTUHJvcGVydHkgewot
ICAgIFtDRVJlYWN0aW9ucywgQ1NTUHJvcGVydHk9UHJvcGVydHlOYW1lXSBhdHRyaWJ1dGUgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBwcm9wZXJ0eTsKLX07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5p
ZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwordHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01T
dHJpbmc7CisKK1sKKyAgICBFeHBvc2VkPVRlc3RHbG9iYWxPYmplY3QKK10gaW50ZXJmYWNlIFRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIHsKKyAgICBbQ0VSZWFjdGlvbnMs
IERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMV0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHkxOwor
ICAgIFtDRVJlYWN0aW9ucywgRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFy
ZWRBdHRyaWJ1dGUxXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0
cmluZyBwcm9wZXJ0eTI7CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlPXNoYXJlZEF0dHJpYnV0ZTFdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmddIENTU09NU3RyaW5nIHByb3BlcnR5MzsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMl0gYXR0cmlidXRl
IFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk0OworICAgIFtD
RVJlYWN0aW9ucywgRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFyZWRBdHRy
aWJ1dGUyXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBw
cm9wZXJ0eTU7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwCShyZXZpc2lvbiAy
NzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q1NTUHJvcGVydHkuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjk4ICswLDAgQEAKLS8qCi0gICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAg
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdENT
U1Byb3BlcnR5LmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUu
aCIKLSNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKLSNpbmNsdWRlICJKU0RPTUF0dHJpYnV0
ZS5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgot
I2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RPTVdyYXBw
ZXJDYWNoZS5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBBdHRyaWJ1dGVz
Ci0KLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5Q29u
c3RydWN0b3IpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJv
cGVydHlfcHJvcGVydHkpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpOwotCi1jbGFzcyBKU1Rlc3RDU1NQcm9wZXJ0eVByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAg
ICBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQot
ICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpT
dWJzcGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9T
SEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAg
ICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0K
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci1TVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSwgSlNUZXN0Q1NT
UHJvcGVydHlQcm90b3R5cGU6OkJhc2UpOwotCi11c2luZyBKU1Rlc3RDU1NQcm9wZXJ0eURPTUNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0Q1NTUHJv
cGVydHk+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0
dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDU1NQcm9wZXJ0eTo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q1NTUHJvcGVydHkiX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHki
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q1NTUHJvcGVy
dHlQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJwcm9wZXJ0eSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eSkgfSB9
LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKSB9OwotCi12
b2lkIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17
Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgSlNUZXN0Q1NTUHJvcGVydHk6OmluZm8oKSwgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5
cGVUYWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJB
TlNJVElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0Q1NTUHJvcGVydHk6OnNfaW5m
byA9IHsgIlRlc3RDU1NQcm9wZXJ0eSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q1NTUHJvcGVydHkpIH07Ci0KLUpTVGVzdENTU1By
b3BlcnR5OjpKU1Rlc3RDU1NQcm9wZXJ0eShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQotICAg
IDogSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0Q1NTUHJvcGVydHk6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLQotICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf
YmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RDU1NQcm9wZXJ0eT46OnZhbHVlLCAiSW50ZXJm
YWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVt
ZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNP
YmplY3QqIEpTVGVzdENTU1Byb3BlcnR5OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBKU1Rlc3RDU1NQcm9wZXJ0
eVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qu
b2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdENTU1Byb3BlcnR5Ojpw
cm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAg
IHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0Q1NTUHJvcGVydHk+KHZtLCBnbG9iYWxPYmpl
Y3QpOwotfQotCi1KU1ZhbHVlIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3I+KHZtLCAqanND
YXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZvaWQg
SlNUZXN0Q1NTUHJvcGVydHk6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCi17Ci0gICAgSlNU
ZXN0Q1NTUHJvcGVydHkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RDU1NQcm9wZXJ0
eSo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdENTU1Byb3BlcnR5Ojp+SlNUZXN0Q1NT
UHJvcGVydHkoKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q1NTUHJvcGVydHkqIElE
TEF0dHJpYnV0ZTxKU1Rlc3RDU1NQcm9wZXJ0eT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKLXsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci19Ci0KLUpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJv
dG90eXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDU1NQ
cm9wZXJ0eTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
cHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0KQotewotICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlQcm9wZXJ0eU5hbWUpKSkpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDU1NQcm9wZXJ0eT46Omdl
dDxqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0
eVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q1NTUHJv
cGVydHkmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKLSAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vz
c2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewotICAgICAgICByZXR1
cm4gaW1wbC5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5UHJvcGVydHlOYW1lLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSwgZmFsc2UpOwotICAgIH0pOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1KU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHks
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1
dGVOYW1lKSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdENTU1Byb3BlcnR5Pjo6
c2V0PHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1KU0M6
Oklzb1N1YnNwYWNlKiBKU1Rlc3RDU1NQcm9wZXJ0eTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQotewotICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsKLSAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNw
YWNlcygpOwotICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENT
U1Byb3BlcnR5LmdldCgpKQotICAgICAgICByZXR1cm4gc3BhY2U7Ci0gICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDU1NQ
cm9wZXJ0eT4gfHwgIUpTVGVzdENTU1Byb3BlcnR5OjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBp
ZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qs
IEpTVGVzdENTU1Byb3BlcnR5PikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NT
UHJvcGVydHkgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5o
ZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENTU1By
b3BlcnR5KTsKLSAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENTU1By
b3BlcnR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJvcGVydHkpOwotICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkuZ2V0KCk7Ci1J
R05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQotSUdOT1JFX1dBUk5JTkdT
X0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0gICAgdm9pZCAoKm15VmlzaXRPdXRwdXRD
b25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTVGVzdENTU1By
b3BlcnR5Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzOwotICAgIHZvaWQgKCpqc0NlbGxWaXNpdE91
dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNDOjpK
U0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7Ci0gICAgaWYgKG15VmlzaXRPdXRwdXRDb25z
dHJhaW50ICE9IGpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkKLSAgICAgICAgY2xpZW50RGF0
YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5H
U19FTkQKLUlHTk9SRV9XQVJOSU5HU19FTkQKLSAgICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQg
SlNUZXN0Q1NTUHJvcGVydHk6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVy
JiBhbmFseXplcikKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdENTU1By
b3BlcnR5Kj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2Vs
bCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGws
ICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3Ry
aW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9v
bCBKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIEFic3RyYWN0U2xvdFZpc2l0b3Im
IHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRs
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24p
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkK
LXsKLSAgICBhdXRvKiBqc1Rlc3RDU1NQcm9wZXJ0eSA9IHN0YXRpY19jYXN0PEpTVGVzdENTU1By
b3BlcnR5Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVy
KHdvcmxkLCAmanNUZXN0Q1NTUHJvcGVydHktPndyYXBwZWQoKSwganNUZXN0Q1NTUHJvcGVydHkp
OwotfQotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikK
LSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lk
ICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdENTU1Byb3BlcnR5QFdlYkNvcmVAQDZCQCIp
W10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUx
NVRlc3RDU1NQcm9wZXJ0eUVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJM
RShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVy
ID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAg
dm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdENTU1By
b3BlcnR5QFdlYkNvcmVAQDZCQCIpOwotI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSAmX1pUVk43V2ViQ29yZTE1VGVzdENTU1Byb3BlcnR5RVsyXTsKLSNlbmRpZgotCi0g
ICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0Q1NTUHJvcGVydHkgZG9lcyBub3QgaGF2ZSBhIHZ0YWJs
ZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0Q1NTUHJvcGVydHk+Ojp2YWx1ZSwgIlRlc3RDU1NQ
cm9wZXJ0eSBpcyBub3QgcG9seW1vcnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBh
c3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8v
IFRlc3RDU1NQcm9wZXJ0eSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdENTU1Byb3BlcnR5IGhhcyBz
dWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkg
cmVxdWlyZSBUZXN0Q1NTUHJvcGVydHkgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5p
bmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFs
VlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdENTU1Byb3BlcnR5PihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q1NT
UHJvcGVydHkmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdENTU1Byb3BlcnR5KiBKU1Rlc3RDU1NQcm9w
ZXJ0eTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENTU1Byb3BlcnR5Kj4odm0s
IHZhbHVlKSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oCShyZXZpc2lvbiAy
NzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q1NTUHJvcGVydHkuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIK
LSNpbmNsdWRlICJUZXN0Q1NTUHJvcGVydHkuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU1Rlc3RDU1NQcm9wZXJ0eSA6
IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdENTU1Byb3BlcnR5PiB7Ci1wdWJsaWM6Ci0gICAgdXNp
bmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+OwotICAgIHN0YXRpYyBKU1Rl
c3RDU1NQcm9wZXJ0eSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkKLSAg
ICB7Ci0gICAgICAgIEpTVGVzdENTU1Byb3BlcnR5KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdENTU1Byb3BlcnR5PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTVGVzdENTU1Byb3BlcnR5KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAg
ICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0g
ICAgc3RhdGljIFRlc3RDU1NQcm9wZXJ0eSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFs
dWUpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAgIERFQ0xB
UkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNl
QWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZN
JiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNl
QWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lk
IGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wcm90ZWN0ZWQ6Ci0g
ICAgSlNUZXN0Q1NTUHJvcGVydHkoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYs
IFJlZjxUZXN0Q1NTUHJvcGVydHk+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyIGZpbmFsIDogcHVibGlj
IEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICBib29sIGlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpT
Qzo6QWJzdHJhY3RTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKikgZmluYWw7Ci0gICAgdm9pZCBm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KSBmaW5hbDsK
LX07Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBw
ZXJXb3JsZCYsIFRlc3RDU1NQcm9wZXJ0eSopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEpTVGVzdENTU1Byb3BlcnR5T3duZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIuZ2V0KCk7
Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RDU1NQcm9wZXJ0eSogd3JhcHBhYmxl
T2JqZWN0KQotewotICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RDU1NQ
cm9wZXJ0eSYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RDU1NQcm9wZXJ0eSogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdENTU1Byb3BlcnR5PiYmIGlt
cGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0K
LQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RDU1NQ
cm9wZXJ0eT4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdENTU1Byb3BlcnR5Owot
ICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0Q1NTUHJvcGVydHkqOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMzUgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNv
dXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaCIKKwor
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNE
T01BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0
cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFu
YWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+
CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworLy8g
QXR0cmlidXRlcworCitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTIpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyKTsKKworY2xhc3MgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Q7CisgICAgc3RhdGljIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQ
cm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZVByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQor
CisgICAgREVDTEFSRV9JTkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6
OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNF
X1NIQVJBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5
cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQor
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6
SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90
eXBlLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlOjpC
YXNlKTsKKwordXNpbmcgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURP
TUNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT47CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBnbG9i
YWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
eworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIl9zKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVjdG9yKSB9OworCisvKiBI
YXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInByb3Bl
cnR5MSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1
dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRy
aWJ1dGUxKSB9IH0sCisgICAgeyAicHJvcGVydHkyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTMi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRl
MSkgfSB9LAorICAgIHsgInByb3BlcnR5NCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyKSB9IH0sCisgICAgeyAicHJvcGVydHk1Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29y
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTIpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTIpIH0g
fSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3Rv
dHlwZSkgfTsKKwordm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6aW5mbygpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0Nf
VE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OnNfaW5mbyA9IHsgIlRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlKSB9OworCitKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+JiYgaW1wbCkKKyAgICA6IEpTRE9N
V3JhcHBlcjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4oc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9i
amVjdCwgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+Ojp2YWx1ZSwgIklu
dGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGlt
cGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisK
K0pTT2JqZWN0KiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpjcmVh
dGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorewor
ICAgIHJldHVybiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90
eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpwcm90b3R5cGUoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90
b3R5cGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4odm0sIGdsb2Jh
bE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKK3sKKyAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGU6On5KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlKCk7Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUqIElETEF0dHJpYnV0ZTxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCitKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5
cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVfc2hhcmVkQXR0cmlidXRlMUJvZHkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5zaGFyZWRBdHRyaWJ1dGUxKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhh
dHRyaWJ1dGVOYW1lKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPjo6Z2V0UGFzc2luZ1By
b3BlcnR5TmFtZTxqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJl
ZEF0dHJpYnV0ZTFCb2R5LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hh
cmVkQXR0cmlidXRlMUJvZHkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CisgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZO
ZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAg
cmV0dXJuIGltcGwuc2V0U2hhcmVkQXR0cmlidXRlMShwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
YXR0cmlidXRlTmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZT46OnNldFBhc3NpbmdQcm9wZXJ0eU5hbWU8c2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVfc2hhcmVkQXR0cmlidXRlMkJvZHkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmplY3Qs
IFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC5zaGFyZWRBdHRyaWJ1dGUyKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhh
dHRyaWJ1dGVOYW1lKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTIsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPjo6Z2V0UGFzc2luZ1By
b3BlcnR5TmFtZTxqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJl
ZEF0dHJpYnV0ZTJCb2R5LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hh
cmVkQXR0cmlidXRlMkJvZHkoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CisgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZO
ZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAg
cmV0dXJuIGltcGwuc2V0U2hhcmVkQXR0cmlidXRlMihwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmco
YXR0cmlidXRlTmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZT46OnNldFBhc3NpbmdQcm9wZXJ0eU5hbWU8c2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyQm9keT4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworSlND
OjpJc29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBz
cGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUu
Z2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFj
ZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsK
KyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7
CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgdm9pZCAoKm15VmlzaXRPdXRw
dXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7
CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBK
U0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsK
KyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFpbnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25z
dHJhaW50KQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBl
bmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAg
IHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6
ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlKj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9i
amVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNP
YmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFi
ZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5
emVyKTsKK30KKworYm9vbCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hh
cioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFS
QU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRl
eHQpCit7CisgICAgYXV0byoganNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUq
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nh
c3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQs
ICZqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLT53cmFwcGVkKCksIGpz
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOworfQorCisjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlm
aWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29yZUBA
NkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2Vi
Q29yZTM4VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVFW107IH0KKyNlbmRp
ZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0
VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQq
IGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMzhUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUVbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFp
bHMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgZG9lcyBub3QgaGF2ZSBh
IHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZT46OnZhbHVlLCAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0
aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBn
ZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcg
aGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRy
aWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJU
KGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgor
ICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGltcGwpOworfQorCitUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6dG9XcmFwcGVk
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNl
IHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1i
aW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPjsKKyAgICBzdGF0aWMgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAg
ICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqIHRvV3JhcHBlZChK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9u
QXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0K
KyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOworcHJvdGVjdGVkOgorICAgIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVPd25lciBmaW5hbCA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Citw
dWJsaWM6CisgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBj
b25zdCBjaGFyKiopIGZpbmFsOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFu
ZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lcj4gb3duZXI7CisgICAg
cmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAg
ICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZSYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBpbXBsKSB7IHJl
dHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBs
KSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVk
KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgp
KSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29u
dmVydGVyVHJhaXRzPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiB7Cisg
ICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTMgQEAKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zLmgiCiAjaW5jbHVkZSAi
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oIgotI2luY2x1ZGUgIkpTVGVzdENTU1Byb3Bl
cnR5LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2FsbFRyYWNlci5oIgogI2luY2x1ZGUgIkpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgi
CiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNp
bmNsdWRlICJKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5oIgogI2luY2x1ZGUgIkpTVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaCIKKyNpbmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNUZXN0RG9tYWluU2VjdXJpdHku
aCIKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0
RXZlbnRUYXJnZXQuaCIKQEAgLTE2Nyw3ICsxNjcsNiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX1NFVFRFUihzZXRKU1RlCiAjZW5kaWYKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOwog
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RD
YWxsVHJhY2VyQ29uc3RydWN0b3IpOwogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxs
YmFja0ludGVyZmFjZUNvbnN0cnVjdG9yKTsKQEAgLTE3Nyw2ICsxNzYsNyBAQCBzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVy
aXRhbmNlQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3Rvcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpOwpAQCAt
MjM4LDcgKzIzOCw3IEBAIHVzaW5nIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0K
IAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjhdID0geworc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9
IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAg
LTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA1LCAyNjcgfSwKKyAgICB7IDY1LCAtMSB9LAogICAgIHsgMTMsIDI2MCB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDM4LCAt
MSB9LAogICAgIHsgMTksIDI1NyB9LAotICAgIHsgNywgLTEgfSwKKyAgICB7IDYsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMTUs
NyArMzE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNiwg
LTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgMTAsIDI1NiB9LAorICAgIHsgOSwgMjU2IH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IDU3LCAtMSB9LAogICAgIHsgMTgsIC0xIH0sCkBAIC0zOTAsNyArMzkw
LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgNDcs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTEsIC0xIH0s
CisgICAgeyAxMCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKQEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAgICB7IDEyLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDUwLDcgKzQ1MCw3IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEyLCAtMSB9LAorICAg
IHsgMTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCkBAIC00NjMsMTMgKzQ2MywxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDksIC0xIH0sCisgICAgeyA4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0
OCwgMjYzIH0sCi0gICAgeyA4LCAyNjIgfSwKKyAgICB7IDcsIDI2MiB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTA2LDcgKzUwNiw2IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IDU0LCAtMSB9
LAogICAgIHsgNjAsIC0xIH0sCiAgICAgeyA2NCwgLTEgfSwKLSAgICB7IDY1LCAtMSB9LAogfTsK
IAogCkBAIC01MjEsNyArNTIwLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dEdsb2JhbAogI2VuZGlmCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAotICAgIHsgIlRlc3RDU1NQ
cm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RDYWxsVHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoVEVT
VF9DT05ESVRJT05BTCkKICAgICB7ICJUZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
QEAgLTUzMyw2ICs1MzEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xv
YmFsCiAgICAgeyAiVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNl
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Iiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCiAgICAgeyAiVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAorICAgIHsgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RG9tYWluU2VjdXJpdHki
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICAgICB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAi
VGVzdEV2ZW50VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50VGFy
Z2V0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCkBAIC04ODksMTcgKzg4OCw2IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmoKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsK
LSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVz
dENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgJnRoaXNPYmplY3QpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1
Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENh
bGxUcmFjZXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTk4MCw2ICs5NjgsMTcgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iagogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNP
TkluaGVyaXRGaW5hbENvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0
cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
JnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0b3Is
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOworfQorCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REb21haW5TZWN1cml0eUNvbnN0
cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNs
dWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZm
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNzEsNiArMjcyLDE2MyBAQCBWZWN0
b3I8QXRvbVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQorCisjZWxzZQorCitlbnVtIGNsYXNzIERhc2hQcmVmaXggeyBZZXMsIE5vIH07CisKK3N0
YXRpYyBDU1NQcm9wZXJ0eUlEIGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVp
cmluZ0NvbnZlcnNpb24oY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlLCBEYXNoUHJlZml4IGRh
c2hQcmVmaXgpCit7CisgICAgLy8gQ29udmVyc2lvbiBpcyBpbXBsZW1lbnRpbmcgdGhlICJJREwg
YXR0cmlidXRlIHRvIENTUyBwcm9wZXJ0eSBhbGdvcml0aG0iIGZyb20gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzc29tLyNpZGwtYXR0cmlidXRlLXRvLWNzcy1wcm9wZXJ0eS4KKworICAgIGNo
YXIgb3V0cHV0QnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxlbmd0aCArIDFdOworICAgIGNoYXIq
IG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRCdWZmZXI7CisgICAgY29uc3QgY2hhciogb3V0
cHV0QnVmZmVyU3RhcnQgPSBvdXRwdXRCdWZmZXJDdXJyZW50OworCisgICAgaWYgKGRhc2hQcmVm
aXggPT0gRGFzaFByZWZpeDo6WWVzKQorICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0g
Jy0nOworCisgICAgcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8g
YnVmZmVyKSB7CisgICAgICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygp
KSB7CisgICAgICAgICAgICBhdXRvIGMgPSAqYnVmZmVyKys7CisgICAgICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGlzQVNDSUkoYyksICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1l
OiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlm
IChpc0FTQ0lJVXBwZXIoYykpIHsKKyAgICAgICAgICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVu
dCsrID0gJy0nOworICAgICAgICAgICAgICAgICpvdXRwdXRCdWZmZXJDdXJyZW50KysgPSB0b0FT
Q0lJTG93ZXJVbmNoZWNrZWQoYyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0gYzsKKyAgICAgICAgfQorICAgIH0pOworICAgICpv
dXRwdXRCdWZmZXJDdXJyZW50ID0gJ1wwJzsKKworICAgIGF1dG8gaGFzaFRhYmxlRW50cnkgPSBm
aW5kUHJvcGVydHkob3V0cHV0QnVmZmVyU3RhcnQsIG91dHB1dEJ1ZmZlckN1cnJlbnQgLSBvdXRw
dXRCdWZmZXIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaGFzaFRhYmxlRW50cnksICJGYWls
ZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKworICAgIGF1dG8gaWQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPiho
YXNoVGFibGVFbnRyeS0+aWQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaWQgIT0gQ1NTUHJv
cGVydHlJbnZhbGlkLCAiRmFpbGVkIHRvIGNvbnZlcnQgcHJvcGVydHkgbmFtZTogJXMiLCBhdHRy
aWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gaWQ7Cit9CisKK3N0
YXRpYyBDU1NQcm9wZXJ0eUlEIGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVp
cmluZ05vQ29udmVyc2lvbihjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUpCit7CisgICAgY2hh
ciBvdXRwdXRCdWZmZXJbbWF4Q1NTUHJvcGVydHlOYW1lTGVuZ3RoICsgMV07CisgICAgY2hhciog
b3V0cHV0QnVmZmVyQ3VycmVudCA9IG91dHB1dEJ1ZmZlcjsKKyAgICBjb25zdCBjaGFyKiBvdXRw
dXRCdWZmZXJTdGFydCA9IG91dHB1dEJ1ZmZlckN1cnJlbnQ7CisKKyAgICByZWFkQ2hhcmFjdGVy
c0ZvclBhcnNpbmcoYXR0cmlidXRlLCBbJl0oYXV0byBidWZmZXIpIHsKKyAgICAgICAgd2hpbGUg
KGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkpIHsKKyAgICAgICAgICAgIGF1dG8gYyA9
ICpidWZmZXIrKzsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYyA9PSAnLScgfHwg
aXNBU0NJSUxvd2VyKGMpLCAiRmFpbGVkIHRvIGNvbnZlcnQgcHJvcGVydHkgbmFtZTogJXMiLCBh
dHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAqb3V0cHV0QnVm
ZmVyQ3VycmVudCsrID0gYzsKKyAgICAgICAgfQorICAgIH0pOworICAgICpvdXRwdXRCdWZmZXJD
dXJyZW50ID0gJ1wwJzsKKworICAgIGF1dG8gaGFzaFRhYmxlRW50cnkgPSBmaW5kUHJvcGVydHko
b3V0cHV0QnVmZmVyU3RhcnQsIG91dHB1dEJ1ZmZlckN1cnJlbnQgLSBvdXRwdXRCdWZmZXIpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaGFzaFRhYmxlRW50cnksICJGYWlsZWQgdG8gY29udmVy
dCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIGF1dG8gaWQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihoYXNoVGFibGVFbnRy
eS0+aWQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaWQgIT0gQ1NTUHJvcGVydHlJbnZhbGlk
LCAiRmFpbGVkIHRvIGNvbnZlcnQgcHJvcGVydHkgbmFtZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gaWQ7Cit9CisKK1N0cmluZyBDU1NTdHls
ZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25z
dCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJhdGlvbi1jYW1lbF9jYXNlZF9hdHRyaWJ1dGUK
KworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0
ZVJlcXVpcmluZ0NvbnZlcnNpb24oYXR0cmlidXRlLCBEYXNoUHJlZml4OjpObyk7CisKKyAgICAv
LyBUaGUgcHJvcGVydHlJRCByZXR1cm5lZCBoZXJlIHNob3VsZCBuZXZlciBiZSBpbnZhbGlkLCBh
cyBvbmx5IHZhbGlkIHByb3BlcnR5IG5hbWVzIGZyb20gdGhlIGJpbmRpbmdzIHNob3VsZCBldmVy
IGJlIHBhc3NlZCBpbi4KKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NT
UHJvcGVydHlJbnZhbGlkLCAiRmFpbGVkIHRvIGNvbnZlcnQgcHJvcGVydHkgbmFtZTogJXMiLCBh
dHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpOworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0
ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJh
dGlvbi1jYW1lbF9jYXNlZF9hdHRyaWJ1dGUKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBD
U1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVSZXF1aXJpbmdDb252ZXJzaW9uKGF0dHJpYnV0ZSwg
RGFzaFByZWZpeDo6Tm8pOworCisgICAgLy8gVGhlIHByb3BlcnR5SUQgcmV0dXJuZWQgaGVyZSBz
aG91bGQgbmV2ZXIgYmUgaW52YWxpZCwgYXMgb25seSB2YWxpZCBwcm9wZXJ0eSBuYW1lcyBmcm9t
IHRoZSBiaW5kaW5ncyBzaG91bGQgZXZlciBiZSBwYXNzZWQgaW4uCisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkZhaWxlZCB0byBjb252
ZXJ0IHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGZh
bHNlKTsKK30KKworU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRpb246OnByb3BlcnR5VmFsdWVGb3JX
ZWJLaXRDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUpCit7Cisg
ICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJh
dGlvbi13ZWJraXRfY2FzZWRfYXR0cmlidXRlCisKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29r
dXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVSZXF1aXJpbmdDb252ZXJzaW9uKGF0dHJpYnV0
ZSwgRGFzaFByZWZpeDo6WWVzKTsKKworICAgIC8vIFRoZSBwcm9wZXJ0eUlEIHJldHVybmVkIGhl
cmUgc2hvdWxkIG5ldmVyIGJlIGludmFsaWQsIGFzIG9ubHkgdmFsaWQgcHJvcGVydHkgbmFtZXMg
ZnJvbSB0aGUgYmluZGluZ3Mgc2hvdWxkIGV2ZXIgYmUgcGFzc2VkIGluLgorICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJGYWlsZWQgdG8g
Y29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwocHJvcGVydHlJRCk7
Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5
VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1
dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJhdGlvbi13ZWJraXRfY2FzZWRfYXR0cmlidXRl
CisKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1
dGVSZXF1aXJpbmdDb252ZXJzaW9uKGF0dHJpYnV0ZSwgRGFzaFByZWZpeDo6WWVzKTsKKworICAg
IC8vIFRoZSBwcm9wZXJ0eUlEIHJldHVybmVkIGhlcmUgc2hvdWxkIG5ldmVyIGJlIGludmFsaWQs
IGFzIG9ubHkgdmFsaWQgcHJvcGVydHkgbmFtZXMgZnJvbSB0aGUgYmluZGluZ3Mgc2hvdWxkIGV2
ZXIgYmUgcGFzc2VkIGluLgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBD
U1NQcm9wZXJ0eUludmFsaWQsICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIs
IGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiBzZXRQcm9w
ZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxzZSk7Cit9CisKK1N0cmluZyBDU1NT
dHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRlKGNvbnN0
IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSkKK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLWRhc2hlZF9hdHRyaWJ1dGUKKworICAg
IGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVp
cmluZ05vQ29udmVyc2lvbihhdHRyaWJ1dGUpOworCisgICAgLy8gVGhlIHByb3BlcnR5SUQgcmV0
dXJuZWQgaGVyZSBzaG91bGQgbmV2ZXIgYmUgaW52YWxpZCwgYXMgb25seSB2YWxpZCBwcm9wZXJ0
eSBuYW1lcyBmcm9tIHRoZSBiaW5kaW5ncyBzaG91bGQgZXZlciBiZSBwYXNzZWQgaW4uCisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkZh
aWxlZCB0byBjb252ZXJ0IHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9w
ZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRy
aWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJhdGlvbi1kYXNoZWRfYXR0cmlidXRlCisK
KyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVS
ZXF1aXJpbmdOb0NvbnZlcnNpb24oYXR0cmlidXRlKTsKKworICAgIC8vIFRoZSBwcm9wZXJ0eUlE
IHJldHVybmVkIGhlcmUgc2hvdWxkIG5ldmVyIGJlIGludmFsaWQsIGFzIG9ubHkgdmFsaWQgcHJv
cGVydHkgbmFtZXMgZnJvbSB0aGUgYmluZGluZ3Mgc2hvdWxkIGV2ZXIgYmUgcGFzc2VkIGluLgor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQs
ICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHByb3Bl
cnR5SUQsIHZhbHVlLCBmYWxzZSk7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpw
cm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0
dHJpYnV0ZSkKK3sKKyAgICAvLyBCYXNlZCBvbiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLXdlYmtpdF9jYXNlZF9hdHRyaWJ1dGUsIGJ1dCBt
b2RpZmllZCBmb3IgZXB1Yi4KKworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3Bl
cnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVpcmluZ0NvbnZlcnNpb24oYXR0cmlidXRlLCBEYXNoUHJl
Zml4OjpZZXMpOworCisgICAgLy8gVGhlIHByb3BlcnR5SUQgcmV0dXJuZWQgaGVyZSBzaG91bGQg
bmV2ZXIgYmUgaW52YWxpZCwgYXMgb25seSB2YWxpZCBwcm9wZXJ0eSBuYW1lcyBmcm9tIHRoZSBi
aW5kaW5ncyBzaG91bGQgZXZlciBiZSBwYXNzZWQgaW4uCisgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkZhaWxlZCB0byBjb252ZXJ0IHBy
b3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKK30KKworRXhj
ZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvckVw
dWJDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgLy8gQmFzZWQgb24gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJhdGlvbi13ZWJraXRfY2FzZWRfYXR0cmlidXRlLCBi
dXQgbW9kaWZpZWQgZm9yIGVwdWIuCisKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQ
cm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVSZXF1aXJpbmdDb252ZXJzaW9uKGF0dHJpYnV0ZSwgRGFz
aFByZWZpeDo6WWVzKTsKKworICAgIC8vIFRoZSBwcm9wZXJ0eUlEIHJldHVybmVkIGhlcmUgc2hv
dWxkIG5ldmVyIGJlIGludmFsaWQsIGFzIG9ubHkgdmFsaWQgcHJvcGVydHkgbmFtZXMgZnJvbSB0
aGUgYmluZGluZ3Mgc2hvdWxkIGV2ZXIgYmUgcGFzc2VkIGluLgorICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJGYWlsZWQgdG8gY29udmVy
dCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxz
ZSk7Cit9CisKICNlbmRpZgogCiBTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3NzRmxvYXQo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lv
biAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwyNiBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8VmFy
aWFudDxTdHJpbmcsIGRvdWJsZT4+IG5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gc2V0TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFN0
cmluZyB2YWx1ZSwgYm9vbCYgcHJvcGVydHlTdXBwb3J0ZWQpOwogICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CisjZWxzZQorICAgIC8vIEZJWE1F
OiBJdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCwgYnkgdmlydHVlIG9mIGF2b2lkaW5nIHRoZSB0
ZXh0IHRyYW5zZm9ybWF0aW9uIGFuZCBoYXNoIGxvb2t1cCBjdXJyZW50bHkKKyAgICAvLyByZXF1
aXJlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24sIGlmIHdlIGNvdWxkIGNvdWxkIHNtdWdnbGUgdGhl
IENTU1Byb3BlcnR5SUQgdGhyb3VnaCB0aGUgYmluZGluZ3MsIHBlcmhhcHMKKyAgICAvLyBieSBl
bmNvZGluZyBpdCBpbnRvIHRoZSBIYXNoVGFibGVWYWx1ZSBhbmQgdGhlbiBwYXNzaW5nIGl0IHRv
Z2V0aGVyIHdpdGggdGhlIFByb3BlcnR5TmFtZS4KKworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRh
dGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLWNhbWVsX2Nhc2VkX2F0dHJpYnV0ZS4K
KyAgICBTdHJpbmcgcHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3Qg
QXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5VmFsdWVGb3JD
YW1lbENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
KworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBt
YXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0
aW9uLXdlYmtpdF9jYXNlZF9hdHRyaWJ1dGUuCisgICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JX
ZWJLaXRDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRh
dGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLWRhc2hlZF9hdHRyaWJ1dGUuCisgICAg
U3RyaW5nIHByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmlu
ZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gU2hh
cmVkIGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIG5vbi1zdGFu
ZGFyZCBFcHViLWNhc2VkLgorICAgIFN0cmluZyBwcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURM
QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQ
cm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gcGFz
cyBpbiBhIFNldHRpbmdzJiB0byB3b3JrIGNvcnJlY3RseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9tYWtlcHJvcC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXBy
b3AucGwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5w
bAkod29ya2luZyBjb3B5KQpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgZm9yZWFjaCBteSAkbmFtZU9y
QWxpYXMgKEBuYW1lc0FuZEFsaWFzZQogICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1Rv
TmFtZXskbmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1l
c0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZh
bHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15IEBleHRlbmRlZEF0
dHJpYnV0ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1wcm9w
ZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZSIpOwogICAgIHB1c2goQGV4dGVuZGVk
QXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9
fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0
ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRy
dW50aW1lRmxhZ3N7JG5hbWV9OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIs
ICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBmb3Jl
YWNoIG15ICRuYW1lT3JBbGlhcyAoZ3JlcCB7ICRfID1+IC9eCiAgICAgbXkgJG5hbWUgPSAkbmFt
ZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkgJHByb3BlcnR5SWQgPSAk
bmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OwogCi0gICAgbXkgQGV4dGVu
ZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAg
bXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZSIpOwogICAg
IHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRp
bmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKICAgICBwdXNoKEBl
eHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7
JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5hbWV9OwogICAgIG15ICRleHRlbmRlZEF0dHJp
YnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CkBAIC0xNDcyLDcg
KzE0NzIsNyBAQCBmb3JlYWNoIG15ICRuYW1lT3JBbGlhcyAoZ3JlcCB7ICRfID1+IC9cCiAgICAg
bXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkg
JHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19Owog
Ci0gICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3Bl
cnR5SWR9Iik7CisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1
dGUiKTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRCeVNldHRp
bmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0dGluZ3NGbGFnc3skbmFtZX07CiAg
ICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQXRSdW50aW1lPSR7cnVu
dGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdzeyRuYW1lfTsKICAgICBteSAkZXh0
ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMpOwpA
QCAtMTQ5NCw3ICsxNDk0LDcgQEAgZm9yZWFjaCBteSAkbmFtZU9yQWxpYXMgKGdyZXAgeyAkXyA9
fiAvXgogICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9
OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7
JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVy
dHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgi
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1wcm9wZXJ0eVZhbHVlRm9yRXB1YkNh
c2VkSURMQXR0cmlidXRlIik7CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJF
bmFibGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxh
Z3N7JG5hbWV9OwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0
UnVudGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07
CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmli
dXRlVmFsdWVzKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA0LTAyICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1l
IGFuZCBiaW5hcnkgc2l6ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0
aW9uIHByb3BlcnR5IGFjY2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEz
Njg4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy5odG1sOgorICAgICAgICAq
IGZhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLmh0bWw6CisgICAgICAgIFJlbW92ZSB0ZXN0cyBmb3Ig
aXRlcmF0aW9uIG9yZGVyLCB3aGljaCBpcyBub3Qgc3RhbmRhcmRpemVkLCBhbmQgbm90IGNvbnNp
c3RlbnQgYW1vbmcKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9DU1NT
dHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9y
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nz
c3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9yLmh0bWw6CisgICAgICAgIFVw
ZGF0ZSBub3cgdGhhdCB0aGUgcHJvcGVydGllcyBhcmUgcHJvcGVyIGF0dHJpYnV0ZXMgb24gdGhl
IHByb3RvdHlwZS4KKworICAgICAgICAqIGpzL2RvbS9wdXQtb3ZlcnJpZGUtc2hvdWxkLW5vdC11
c2UtaWMuaHRtbDoKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGEgRE9NU3RyaW5nTGlzdCBhcyB0
aGUgb2JqZWN0IHRoYXQgb3ZlcnJpZGVzIHB1dCwgc2luY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiBu
byBsb25nZXIgZG9lcy4KKworICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNp
bmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNp
bmcuaHRtbDoKKyAgICAgICAgUmVtb3ZlIE9iamVjdC5rZXlzKCkgYXNwZWN0IG9mIHRoZSB0ZXN0
LCB3aGljaCBpcyBubyBsb25nZXIgbWVhbmluZ2Z1bCBzaW5jZSB0aGUKKyAgICAgICAgcHJvcGVy
dGllcyBzaG91bGQgbm8gbG9uZ2VyIGV4aXN0IGluIHRoZSByZXN1bHQgc2V0LgorCiAyMDIxLTA0
LTAyICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFj
T1MgXSBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWFjb3MtaW5saW5lLW1lZGlhLWNvbnRy
b2xzL21hY29zLWlubGluZS1tZWRpYS1kcm9wcGluZy1jb250cm9scy5odG1sIGlzIGEgZmxha3kg
ZmFpbHVyZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0
eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NDUwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw2IEBAIFBBU1MgJ1dlYmtpdFRyYW5z
Zm9ybScgaW4gZG9jdW1lbnQuYm9keS4KIFBBU1MgJ2JvZ3VzLXJhbmRvbS1TdHJpbmcnIGluIGRv
Y3VtZW50LmJvZHkuc3R5bGUgaXMgZmFsc2UKIFBBU1MgJ2Nzc1RleHQnIGluIGRvY3VtZW50LmJv
ZHkuc3R5bGUgaXMgdHJ1ZQogUEFTUyAnZ2V0UHJvcGVydHlDU1NWYWx1ZScgaW4gZG9jdW1lbnQu
Ym9keS5zdHlsZSBpcyB0cnVlCi1QQVNTIFRoZSBDU1MgcHJvcGVydHkgb3JkZXIgaXMgY29ycmVj
dAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0
aWVzLmh0bWwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxl
LWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDMzICsyMyw2
IEBACiAgICAgICAgIHNob3VsZEJlRmFsc2UoIidib2d1cy1yYW5kb20tU3RyaW5nJyBpbiBkb2N1
bWVudC5ib2R5LnN0eWxlIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiJ2Nzc1RleHQnIGluIGRv
Y3VtZW50LmJvZHkuc3R5bGUiKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCInZ2V0UHJvcGVydHlD
U1NWYWx1ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSIpOwotCi0gICAgICAgIC8vIFRlc3QgQ1NT
IHByb3BlcnR5IG9yZGVyLgotICAgICAgICB2YXIgc3RhcnRlZDsKLSAgICAgICAgdmFyIGNzc1By
b3BlcnR5Q291bnQgPSAwOwotICAgICAgICB2YXIgcHJldmlvdXM7Ci0gICAgICAgIHZhciBzZWVu
RmlsdGVyOwotICAgICAgICBmb3IgKHZhciBwIGluIGRvY3VtZW50LmJvZHkuc3R5bGUpIHsKLSAg
ICAgICAgICAgIGlmIChwID09PSAiYWxpZ25tZW50QmFzZWxpbmUiKQotICAgICAgICAgICAgICAg
IHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFzdGFydGVkKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHAgPT09ICJmaWx0ZXIiKQotICAgICAgICAg
ICAgICAgIHNlZW5GaWx0ZXIgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHByZXZpb3VzICYmIHBy
ZXZpb3VzID49IHApIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbnZhbGlkIENTUy1t
YXBwZWQgcHJvcGVydHkgb3JkZXI6ICciICsgcCArICInIGFmdGVyICciICsgcHJldmlvdXMgKyAi
JyIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKCsrY3NzUHJvcGVydHlDb3VudCA8PSA0MDApCi0gICAgICAgICAgICAgICAgcHJldmlvdXMg
PSBwOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlZW5GaWx0ZXIp
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlRoZSBDU1MgcHJvcGVydHkgb3JkZXIg
aXMgY29ycmVjdCIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiVGhlICdmaWx0ZXInIHByb3BlcnR5IHdhcyBub3QgZW51bWVyYXRlZCIpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgPC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVu
dW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU0NTApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSwxNCArNjUsNiBAQCBQQVNTIHJlc3VsdEFycmF5WzFdLml0ZW0gaXMg
Y3NzUnVsZUxpc3QuCiBQQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzInCiBQQVNTIHJlc3VsdEFy
cmF5WzJdLml0ZW0gaXMgY3NzUnVsZUxpc3QuaXRlbSgyKQogCi1bb2JqZWN0IENTU1N0eWxlRGVj
bGFyYXRpb25dCi1QQVNTIHJlc3VsdEFycmF5WzBdLmkgaXMgJzAnCi1QQVNTIHJlc3VsdEFycmF5
WzBdLml0ZW0gaXMgY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDApCi1QQVNTIHJlc3VsdEFycmF5
WzFdLmkgaXMgJzEnCi1QQVNTIHJlc3VsdEFycmF5WzFdLml0ZW0gaXMgY3NzU3R5bGVEZWNsYXJh
dGlvbi5pdGVtKDEpCi1QQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzInCi1QQVNTIHJlc3VsdEFy
cmF5WzJdLml0ZW0gaXMgY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDIpCi0KIFtvYmplY3QgQ1NT
VmFsdWVMaXN0XQogUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTAKIFBBU1MgcmVzdWx0QXJy
YXlbMF0uaSBpcyAnMCcKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJh
dGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVt
ZXJhdGlvbi5odG1sCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9k
b21MaXN0RW51bWVyYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDE3ICsxNzcsNiBA
QCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaXRlbSIsICJjc3NSdWxlCiBzaG91bGRCZSgicmVz
dWx0QXJyYXlbMl0uaSIsICInMiciKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5pdGVtIiwg
ImNzc1J1bGVMaXN0Lml0ZW0oMikiKTsKIAotLy8gQ1NTU3R5bGVEZWNsYXJhdGlvbgotLy9kZWJ1
Zyhlc2NhcGVIVE1MKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpKSk7Ci12
YXIgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzJdLmNzc1J1bGVz
WzBdLnN0eWxlOwotcmVzdWx0QXJyYXkgPSBpdGVyYXRlTGlzdChjc3NTdHlsZURlY2xhcmF0aW9u
KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVswXS5pIiwgIicwJyIpOwotc2hvdWxkQmUoInJlc3Vs
dEFycmF5WzBdLml0ZW0iLCAiY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDApIik7Ci1zaG91bGRC
ZSgicmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5p
dGVtIiwgImNzc1N0eWxlRGVjbGFyYXRpb24uaXRlbSgxKSIpOwotc2hvdWxkQmUoInJlc3VsdEFy
cmF5WzJdLmkiLCAiJzInIik7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaXRlbSIsICJjc3NT
dHlsZURlY2xhcmF0aW9uLml0ZW0oMikiKTsKLQogLy8gQ1NTVmFsdWVMaXN0CiB2YXIgY3NzVmFs
dWVMaXN0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ29sJylbMF0pLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1zcGFjaW5nJyk7CiBy
ZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGNzc1ZhbHVlTGlzdCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVy
dGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGll
cy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3Bl
cnRpZXMtZGVzY3JpcHRvci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw4
IEBAIFRoaXMgdGVzdHMgdGhlIGRlc2NyaXB0b3Igb2YgQ1NTU3R5bGVEZWMKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGRlc2NyaXB0b3JbJ3dyaXRhYmxlJ10gaXMgdHJ1ZQor
UEFTUyBkZXNjcmlwdG9yWydnZXQnXSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgorUEFTUyBk
ZXNjcmlwdG9yWydzZXQnXSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyBkZXNjcmlw
dG9yWydlbnVtZXJhYmxlJ10gaXMgdHJ1ZQogUEFTUyBkZXNjcmlwdG9yWydjb25maWd1cmFibGUn
XSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJv
cGVydGllcy1kZXNjcmlwdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZGVz
Y3JpcHRvci5odG1sCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9D
U1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlw
dG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw5IEBACiAgICAgPHNjcmlwdD4KICAg
ICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGRlc2NyaXB0b3Igb2YgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBwcm9wZXJ0aWVzLiIpOwogCi0gICAgICAgIHZhciBkZXNjcmlwdG9yID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkb2N1bWVudC5ib2R5LnN0eWxlLCAnY29sb3In
KTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJkZXNjcmlwdG9yWyd3cml0YWJsZSddIik7CisgICAg
ICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkb2N1
bWVudC5ib2R5LnN0eWxlLl9fcHJvdG9fXywgJ2NvbG9yJyk7CisgICAgICAgIHNob3VsZEJlVHlw
ZSgiZGVzY3JpcHRvclsnZ2V0J10iLCAiRnVuY3Rpb24iKTsKKyAgICAgICAgc2hvdWxkQmVUeXBl
KCJkZXNjcmlwdG9yWydzZXQnXSIsICJGdW5jdGlvbiIpOwogICAgICAgICBzaG91bGRCZVRydWUo
ImRlc2NyaXB0b3JbJ2VudW1lcmFibGUnXSIpOwogICAgICAgICBzaG91bGRCZVRydWUoImRlc2Ny
aXB0b3JbJ2NvbmZpZ3VyYWJsZSddIik7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0w
NC0wMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNv
bXBpbGUgdGltZSBhbmQgYmluYXJ5IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5
bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzUxMzY4ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRp
b24tcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSB0ZXN0IHJlc3VsdCBu
b3cgdGhhdCBpdCBpcyBwYXNzaW5nLgorCiAyMDIxLTA0LTAyICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgW1JlcGxhY2VhYmxlXSBleHRl
bmRlZCBhdHRyaWJ1dGUgZnJvbSBgZG9jdW1lbnQuYWxsYApJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21wYXQvY3NzLXN0eWxlLWRlY2xhcmF0aW9u
LWFsaWFzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9jc3Mtc3R5bGUtZGVjbGFy
YXRpb24tYWxpYXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU0NTApCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9jc3Mt
c3R5bGUtZGVjbGFyYXRpb24tYWxpYXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFsaWFzZXMgZW51bWVyYXRlZCBvbiBDU1NT
dHlsZURlY2xhcmF0aW9uIGFzc2VydF90cnVlOiBBbGlhcyB3ZWJraXRUcmFuc2Zvcm0gc2VlbiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBBbGlhc2VzIGVudW1lcmF0ZWQgb24gQ1NTU3R5
bGVEZWNsYXJhdGlvbgogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgQ1NTIFRl
c3Q6IENTU1N0eWxlRGVjbGFyYXRpb24gcHJvcGVydGllcyBhcmUgZGVmaW5lZCBhcyBXZWJJREwg
YXR0cmlidXRlcywgbm90IHVzaW5nIGdldE93blByb3BlcnR5TmFtZXMoKSBhc3NlcnRfZmFsc2U6
IHNob3VsZG4ndCBoYXZlIGFuIG93biBwcm9wZXJ0eSBmb3IgV2ViSURMIGF0dHJpYnV0ZXMgZXhw
ZWN0ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgQ1NTIFRlc3Q6IENTU1N0eWxlRGVjbGFyYXRpb24g
cHJvcGVydGllcyBhcmUgZGVmaW5lZCBhcyBXZWJJREwgYXR0cmlidXRlcywgbm90IHVzaW5nIGdl
dE93blByb3BlcnR5TmFtZXMoKQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJy
aWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
ZG9tL3B1dC1vdmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy5odG1sCShyZXZpc2lvbiAyNzU0NTAp
CisrKyBMYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsMTAgKzgsMTAgQEAKIDxzY3JpcHQ+CiAgICAgdGVzdChm
dW5jdGlvbigpIHsKICAgICAgICAgZnVuY3Rpb24gdHJhbnNpdGlvbmVkKCkgewotICAgICAgICAg
ICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykuc3R5bGU7CisgICAgICAgICAg
ICBkYXRhc2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpLmRhdGFzZXQ7CiAgICAgICAg
ICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMjA7IGkrKykKLSAgICAgICAgICAgICAgICBzdHlsZVsn
cCcraV0gPSBpOwotICAgICAgICAgICAgcmV0dXJuIHN0eWxlOworICAgICAgICAgICAgICAgIGRh
dGFzZXRbJ3AnK2ldID0gaTsKKyAgICAgICAgICAgIHJldHVybiBkYXRhc2V0OwogICAgICAgICB9
CiAKICAgICAgICAgZnVuY3Rpb24gcHV0dGVyKG8pIHsKSW5kZXg6IExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1w
YXJzaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDYgQEAgT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogVmFsaWQgdHJhbnNpdGlvbi1wcm9w
ZXJ0eSB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3BlcnR5IGlzICdh
bGwnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvblByb3BlcnR5IGlzICdhbGwn
Ci1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uUHJvcGVydHknKSBp
cyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRp
b25Qcm9wZXJ0eScpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAnbm9u
ZScKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgaXMgJ25vbmUnCiBQQVNT
IHN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAnbm9uZScKQEAgLTEwMCw4ICs5OCw2
IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uUHJvcGUKIFZhbGlkIHRyYW5z
aXRpb24tZHVyYXRpb24gdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EdXJh
dGlvbiBpcyAnMHMnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0aW9u
IGlzICcwcycKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25EdXJh
dGlvbicpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uJykgaXMgLTEKIFBBU1Mgc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9u
IGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwog
UEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwpAQCAtMTUwLDggKzE0
Niw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXQKIFZhbGlkIHRy
YW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFu
c2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2Vhc2UnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0
VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdlYXNlJwotUEFTUyBPYmplY3Qua2V5cyhzdHls
ZSkuaW5kZXhPZigndHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykgaXMgbm90IC0xCi1QQVNTIE9i
amVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24n
KSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhcicK
IFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhcicK
IFBBU1Mgc3R5bGUud2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXInCkBA
IC0zMDAsOCArMjk0LDYgQEAgUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1p
bgogVmFsaWQgdHJhbnNpdGlvbi1kZWxheSB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJh
bnNpdGlvbkRlbGF5IGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9u
RGVsYXkgaXMgJzBzJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlv
bkRlbGF5JykgaXMgbm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJr
aXRUcmFuc2l0aW9uRGVsYXknKSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uRGVsYXkgaXMg
JzBzJwogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSBpcyAnMHMnCiBQQVNTIHN0
eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheSBpcyAnMHMnCkBAIC0zNTAsOCArMzQyLDYgQEAgUEFT
UyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheQogVmFsaWQgdHJhbnNpdGlvbiBz
aG9ydGhhbmQgdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb24gaXMgJ2FsbCAw
cyBlYXNlIDBzJwogUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb24gaXMgJ2FsbCAw
cyBlYXNlIDBzJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvbicp
IGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNp
dGlvbicpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb24gaXMgJ25vbmUnCiBQQVNTIGNvbXB1
dGVkU3R5bGUudHJhbnNpdGlvbiBpcyAnbm9uZSAwcyBlYXNlIDBzJwogUEFTUyBzdHlsZS53ZWJr
aXRUcmFuc2l0aW9uIGlzICdub25lJwpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJh
bnNpdGlvbnMtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRp
b25zL3RyYW5zaXRpb25zLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw4ICszMCw2IEBAIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25Qcm9w
ZXIKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSIsICIn
YWxsJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgPSAibm9uZSI7Ci1zaG91bGROb3RC
ZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25Qcm9wZXJ0eScpIiwgIi0x
Iik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRp
b25Qcm9wZXJ0eScpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlvblByb3BlcnR5
IiwgIidub25lJyIpOwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3BlcnR5
IiwgIidub25lJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSIs
ICInbm9uZSciKTsKQEAgLTE3Niw4ICsxNzQsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50
cmFuc2l0aW9uRHVyYXRpCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9u
RHVyYXRpb24iLCAiJzBzJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiMHMiOwot
c2hvdWxkTm90QmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uRHVyYXRp
b24nKSIsICItMSIpOwotc2hvdWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJr
aXRUcmFuc2l0aW9uRHVyYXRpb24nKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRp
b25EdXJhdGlvbiIsICInMHMnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9u
RHVyYXRpb24iLCAiJzBzJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25EdXJh
dGlvbiIsICInMHMnIik7CkBAIC0yNTYsOCArMjUyLDYgQEAgc2hvdWxkQmUoImNvbXB1dGVkU3R5
bGUudHJhbnNpdGlvblRpbWluZwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uIiwgIidlYXNlJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uVGltaW5n
RnVuY3Rpb24gPSAibGluZWFyIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5k
ZXhPZigndHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykiLCAiLTEiKTsKLXNob3VsZEJlKCJPYmpl
Y3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJyki
LCAiLTEiKTsKIHNob3VsZEJlKCJzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2xp
bmVhciciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5jdGlv
biIsICInbGluZWFyJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbiIsICInbGluZWFyJyIpOwpAQCAtNDg1LDggKzQ3OSw2IEBAIHNob3VsZEJlKCJjb21w
dXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSIKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndlYmtp
dFRyYW5zaXRpb25EZWxheSIsICInMHMnIik7CiAKIHN0eWxlLnRyYW5zaXRpb25EZWxheSA9ICIw
cyI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25E
ZWxheScpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dl
YmtpdFRyYW5zaXRpb25EZWxheScpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlv
bkRlbGF5IiwgIicwcyciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxh
eSIsICInMHMnIik7CiBzaG91bGRCZSgic3R5bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5IiwgIicw
cyciKTsKQEAgLTU2NSw4ICs1NTcsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0
aW9uIiwgIidhCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uIiwgIidh
bGwgMHMgZWFzZSAwcyciKTsKIAogc3R5bGUudHJhbnNpdGlvbiA9ICJub25lIjsKLXNob3VsZE5v
dEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvbicpIiwgIi0xIik7Ci1z
aG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb24nKSIs
ICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRpb24iLCAiJ25vbmUnIik7CiBzaG91bGRC
ZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uIiwgIidub25lIDBzIGVhc2UgMHMnIik7CiBzaG91
bGRCZSgic3R5bGUud2Via2l0VHJhbnNpdGlvbiIsICInbm9uZSciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425105</attachid>
            <date>2021-04-03 12:06:35 -0700</date>
            <delta_ts>2021-04-03 12:59:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222518-20210403120633.patch</filename>
            <type>text/plain</type>
            <size>116542</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTAyICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6
ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFj
Y2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oOgorICAgICAgICBUdXJuIG9uIEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElF
U19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OLCBub3cgdGhhdCB3ZSBoYXZlIGl0IHVzaW5nIHNo
YXJlZAorICAgICAgICBkZWxlZ2F0aW5nIHN5bnRoZXRpYyBhdHRyaWJ1dGVzLgorCiAyMDIxLTA0
LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
YWJsZSBQcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05lYXI2MEZQU0VuYWJsZWQgYnkgZGVmYXVs
dApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3
LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9Q
RVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCi0jZGVmaW5lIEVOQUJMRV9BVFRSSUJV
VEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OIDAKKyNkZWZpbmUg
RU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJ
T04gMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw5NyBAQAorMjAyMS0wNC0wMiAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5
IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0
eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtaW1wbGVtZW50
IHByb3BlciAobm90IHVzaW5nIG5hbWVkLWdldHRlcnMpIHN1cHBvcnQgZm9yIHRoZSBDU1NTdHls
ZURlY2xhcmF0aW9uIGJpbmRpbmdzCisgICAgICAgIHVzaW5nIGEgbmV3IERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUgZXh0ZW5kZWQgYXR0dHJpYnV0ZSB3aGljaCBhbGxvd3MgSURM
IGF0dHJpYnV0ZXMKKyAgICAgICAgdG8gc2hhcmUgYSBjdXN0b20gZ2V0dGVyIC8gc2V0dGVyIGlt
cGxlbWVudGF0aW9uIGFuZCBkZWxlZ2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbiB0byBpdC4gV2hl
bgorICAgICAgICB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoZSBzeW50aGV0aWMgYXR0cmli
dXRlJ3MgaW1wbGVtZW50YXRpb24gaXMgcGFzc2VkIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eQorICAg
ICAgICBuYW1lIHNvIGl0IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBpdC4K
KworICAgICAgICBXZSB1c2UgdGhpcyBmb3IgQ1NTU3R5bGVEZWNsYXJhdGlvbiBieSBicmVha2lu
ZyB0aGUgaHVnZSBsaXN0IG9mIGdlbmVyYXRlZCBwcm9wZXJ0aWVzIGludG8KKyAgICAgICAgZm91
ciBncm91cHMsIGVhY2ggd2l0aCB0aGVpciBvd24gc3ludGhldGljIGF0dHJpYnV0ZS4gVGhlIGdy
b3VwcyBhcmUgYmFzZWQgb24gdGhlIGRpZmZlcmVudAorICAgICAgICB0cmFuc2Zvcm1hdGlvbiBy
dWxlcyBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGU6OnNldFBhc3NpbmdQcm9wZXJ0eU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXRQYXNzaW5nUHJvcGVydHlO
YW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOgorICAgICAgICAoR2V0QXR0cmlidXRlU2V0
dGVyTmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdl
bmVyYXRlU2hhcmVkU3ludGhldGljQXR0cmlidXRlRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRy
aWJ1dGVHZXR0ZXJBbmRTZXR0ZXJEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJp
YnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0
ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKE1ha2VTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgor
ICAgICAgICAoQ29tcHV0ZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMpOgorICAgICAgICAoTmVl
ZHNEZWxlZ2F0aW9uVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgorICAgICAgICAoR2V0U2hh
cmVkU3ludGhldGljQXR0cmlidXRlKToKKyAgICAgICAgKE5lZWRzUHJvcGVydHlOYW1lUGFzc2Vk
VG9BdHRyaWJ1dGVCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9i
YWxDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDU1NQcm9wZXJ0eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29y
ZTo6SURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+
OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
X3NoYXJlZEF0dHJpYnV0ZTFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZTo6YW5hbHl6ZUhlYXApOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
OjpzdWJzcGFjZUZvcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6d3JhcHBlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29u
c3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVy
dHlDb25zdHJ1Y3RvckdldHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
LmlkbDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlUmVxdWlyaW5n
Q29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExB
dHRyaWJ1dGVSZXF1aXJpbmdOb0NvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZv
ckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JXZWJL
aXRDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0
aW9uOjpwcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlW
YWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9tYWtl
cHJvcC5wbDoKKwogMjAyMS0wNC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBQZW5kaW5nSW1hZ2VCaXRtYXAgZ2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBz
Y3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMy
LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CiBjbGFzcyBJRExBdHRyaWJ1dGUgewog
cHVibGljOgogICAgIHVzaW5nIFNldHRlciA9IGJvb2woSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Q2xhc3MmLCBKU0M6OkpTVmFsdWUpOworICAgIHVzaW5nIFNldHRlclBhc3NpbmdQcm9wZXJ0eU5h
bWUgPSBib29sKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiAgICAgdXNpbmcgU3RhdGljU2V0dGVyID0gYm9vbChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpT
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xhc3MmKTsKKyAgICB1c2luZyBHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0NsYXNzJiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHVzaW5nIFN0YXRpY0dldHRlciA9IEpT
Qzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAgICAgCiAgICAgc3RhdGljIEpTQ2xh
c3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwpAQCAt
NTMsNyArNTUsMjQgQEAgcHVibGljOgogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0aCBgc2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBs
aWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxh
bWJkYS4KKyAgICB0ZW1wbGF0ZTxTZXR0ZXJQYXNzaW5nUHJvcGVydHlOYW1lIHNldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6VGhyb3c+CisgICAgc3RhdGljIGJvb2wgc2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKworICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJv
dykKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVy
VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZv
KCksIGF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVOYW1lKSkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPFN0YXRpY1NldHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
IHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRp
YyBib29sIHNldFN0YXRpYyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpAQCAtODMsNyArMTAyLDMyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNDOjpKU1ZhbHVlOjpl
bmNvZGUoZ2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0KSkpKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0
aCBgZ2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBsaWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxh
dGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxhbWJkYS4KKyAgICB0ZW1wbGF0ZTxHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lIGdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxk
VGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CisgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgZ2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkpOworCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgeworICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNDbGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6
OmVuY29kZShnZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIGF0dHJpYnV0
ZU5hbWUpKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJv
cigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRy
aWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhy
b3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UpCisgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCByZWplY3RQcm9taXNlV2l0
aEdldHRlclR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCksIGF0
dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpT
Qzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgYXR0cmlidXRlTmFtZSkpKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB0ZW1wbGF0ZTxT
dGF0aWNHZXR0ZXIgZ2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBnZXRTdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xODQwLDYgKzE4NDAsNyBAQCBz
dWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKSA9IEBfOwogCisgICAgcmV0dXJuIEdldEF0dHJpYnV0ZUdldHRlck5h
bWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpIGlmIElzSlNCdWlsdGlu
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRyaWJ1dGVPckZ1
bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiBNYW5nbGVB
dHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSAuICJDb25zdHJ1Y3RvciIg
aWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwpA
QCAtMTg1MCw2ICsxODUxLDcgQEAgc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIHsKICAgICBt
eSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKIAorICAgIHJldHVy
biBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsIEdldFNoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgaWYgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZX07CiAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKSBpZiBJc0pTQnVpbHRp
bigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRy
aWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0
YXRpYzsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xh
c3NOYW1lKSAuIE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPm5hbWUp
OwpAQCAtNDI4MCwyNCArNDI4MiwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUigke2NvbnN0cnVjdG9yR2V0dGVyfSk7XG4iKTsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9fSkgeworICAgICAgICAgICAg
ICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29u
dGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OwogCi0g
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtcbiIp
OwotICAgICAgICAgICAgdW5sZXNzIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKSkgewotICAgICAgICAg
ICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsbHlSZWFkV3JpdGV9OwotICAgICAgICAgICAgICAgIGlmICgk
cmVhZFdyaXRlQ29uZGl0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHJlYWRXcml0
ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJHJlYWRXcml0ZUNvbmRpdGlvbmFsKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtyZWFkV3JpdGVDb25kaXRpb25h
bFN0cmluZ31cbiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBteSAkc2V0
dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKCR7c2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0
dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuIik7CkBAIC00ODc2LDcgKzQ4NzAsMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAorICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgICAgICBHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZVNl
dHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUg
KEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
fTsKKwogICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24oXEBpbXBsQ29u
dGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIEdlbmVy
YXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICB9CkBAIC01MjA3LDcgKzUyMTAsOCBAQCBzdWIg
R2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgbXkgQHNpZ25hdHVyZUFy
Z3VtZW50cyA9ICgpOwogICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0Iik7CiAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRz
LCAiJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0IikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwot
ICAgIAorICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIlByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUiKSBpZiBOZWVkc1Byb3BlcnR5TmFtZVBhc3NlZFRvQXR0cmlidXRlQm9keSgkYXR0cmli
dXRlKTsKKwogICAgIG15ICRuZWVkU2VjdXJpdHlDaGVjayA9ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcn07CiAgICAgbXkgJGhhc0N1c3RvbUdl
dHRlciA9IEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlKTsKICAgICBteSAkaXNFdmVudEhhbmRs
ZXIgPSAkYXR0cmlidXRlLT50eXBlLT5uYW1lIGVxICJFdmVudEhhbmRsZXIiOwpAQCAtNTI2OSwx
MyArNTI3Myw2IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1
cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtc
biIpOwogICAgICAgICB9Ci0gICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q1NTUHJvcGVydHl9KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5
TmFtZXMuaCJ9ID0gMTsKLSAgICAgICAgbXkgJHByb3BlcnR5SUQgPSAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07Ci0KLSAgICAgICAgbXkgJHRvSlNFeHByZXNz
aW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZh
Y2UsICJpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJ
RH0pIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAoJHt0b0pTRXhwcmVzc2lvbn0pKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFs
dWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiLmdldCgpKVxuIik7CkBA
IC01MzI0LDYgKzUzMjEsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5l
RGVmCiAgICAgCiAgICAgbXkgJGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lID0gImdldCI7CiAgICAg
JGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1dGUtPmlzU3Rh
dGljOworICAgICRjYWxsQXR0cmlidXRlR2V0dGVyTmFtZSAuPSAiUGFzc2luZ1Byb3BlcnR5TmFt
ZSIgaWYgTmVlZHNQcm9wZXJ0eU5hbWVQYXNzZWRUb0F0dHJpYnV0ZUJvZHkoJGF0dHJpYnV0ZSk7
CiAgICAgCiAgICAgbXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBs
YXRlUGFyYW1ldGVycywgJGF0dHJpYnV0ZUdldHRlckJvZHlOYW1lKTsKQEAgLTUzNDEsNiArNTMz
OSwyOSBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0
dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24KK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgcmV0dXJuIGlmIElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworCisgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZSk7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdl
dHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9
KTtcbiIpOworICAgIHVubGVzcyAoSXNSZWFkb25seSgkYXR0cmlidXRlKSB8fCAkY29kZUdlbmVy
YXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKKyAgICAgICAgbXkg
JHJlYWRXcml0ZUNvbmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q29uZGl0aW9uYWxseVJlYWRXcml0ZX07CisgICAgICAgIGlmICgkcmVhZFdyaXRlQ29uZGl0aW9u
YWwpIHsKKyAgICAgICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRy
ZWFkV3JpdGVDb25kaXRpb25hbCk7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIj
aWYgJHtyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZ31cbiIpOworICAgICAgICB9CisgICAgICAg
IG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUigke3NldHRlcn0pO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOworICAgIH0K
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKK30KKwogc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyRGVmaW5pdGlvbgogewogICAgIG15
ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87
CkBAIC01MzcwLDYgKzUzOTEsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVm
aW5pdGlvCiAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QiKTsKICAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICIke2Ns
YXNzTmFtZX0mIHRoaXNPYmplY3QiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcHVz
aChAc2lnbmF0dXJlQXJndW1lbnRzLCAiSlNWYWx1ZSB2YWx1ZSIpOworICAgIHB1c2goQHNpZ25h
dHVyZUFyZ3VtZW50cywgIlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUiKSBpZiBOZWVkc1Byb3Bl
cnR5TmFtZVBhc3NlZFRvQXR0cmlidXRlQm9keSgkYXR0cmlidXRlKTsKIAogICAgIG15ICRuZWVk
U2VjdXJpdHlDaGVjayA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2Vj
dXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2Vj
dXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2Vj
dXJpdHlPblNldHRlcn07CiAgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IEhhc0N1c3RvbVNldHRl
cigkYXR0cmlidXRlKTsKQEAgLTU0MTksMjEgKzU0NDEsNiBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1
dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2
bS5oZWFwLndyaXRlQmFycmllcigmdGhpc09iamVjdCwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZSh2YWx1ZSk7XG5cbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHRydWU7XG4iKTsKLSAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX0p
IHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siQ1NTUHJvcGVydHlOYW1lcy5oIn0gPSAxOwotCi0g
ICAgICAgIG15ICRwcm9wZXJ0eUlEID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q1NTUHJvcGVydHl9OwotCi0gICAgICAgIG15ICRleGNlcHRpb25UaHJvd2VyID0gR2V0QXR0cmli
dXRlRXhjZXB0aW9uVGhyb3dlcigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgbXkg
JHRvTmF0aXZlRXhwcmVzc2lvbiA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXR0cmli
dXRlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25h
bH0sICImbGV4aWNhbEdsb2JhbE9iamVjdCIsICJsZXhpY2FsR2xvYmFsT2JqZWN0IiwgInRoaXNP
YmplY3QiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkiLCAkZXhjZXB0aW9uVGhyb3dlcik7
Ci0KLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byBuYXRpdmVWYWx1ZSA9ICR7dG9OYXRpdmVFeHByZXNzaW9ufTtcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5JHtwcm9wZXJ0eUlEfSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgfSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiB0cnVlO1xuIik7CiAgICAgfSBlbHNpZiAoJGlzUmVwbGFjZWFibGUpIHsKICAgICAgICAg
bXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3BlcnR5LlxuIik7CkBAIC01NTIxLDYgKzU1
MjgsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgCiAg
ICAgbXkgJGNhbGxBdHRyaWJ1dGVTZXR0ZXJOYW1lID0gInNldCI7CiAgICAgJGNhbGxBdHRyaWJ1
dGVTZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgICRj
YWxsQXR0cmlidXRlU2V0dGVyTmFtZSAuPSAiUGFzc2luZ1Byb3BlcnR5TmFtZSIgaWYgTmVlZHNQ
cm9wZXJ0eU5hbWVQYXNzZWRUb0F0dHJpYnV0ZUJvZHkoJGF0dHJpYnV0ZSk7CiAgICAgCiAgICAg
bXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVy
cywgJGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lKTsKQEAgLTYwMDMsNiArNjAxMSwxMCBAQCBzdWIg
R2VuZXJhdGVDYWxsV2l0aAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkY2FsbFdpdGgsICJXb3JsZCIpKSB7CiAgICAgICAgIHB1c2goQGNhbGxXaXRo
QXJncywgIndvcmxkRm9yRE9NT2JqZWN0KCR7dGhpc1JlZmVyZW5jZX0pIik7CiAgICAgfQorICAg
IGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgs
ICJQcm9wZXJ0eU5hbWUiKSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01Db252
ZXJ0U3RyaW5ncy5oIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgInByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpIik7CisgICAgfQogCiAgICAgcmV0dXJuIEBjYWxs
V2l0aEFyZ3M7CiB9CkBAIC04MDQ1LDQgKzgwNTcsNzMgQEAgc3ViIEdlbmVyYXRlQ3VzdG9tRWxl
bWVudFJlYWN0aW9uc1N0YWNrSQogICAgIH0KIH0KIAorc3ViIE1ha2VTaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUKK3sKKyAgICBteSAoJG5hbWUsICRiYXNlQXR0cmlidXRlKSA9IEBfOworCisgICAg
bXkgJHNoYXJlZEF0dHJpYnV0ZSA9IElETEF0dHJpYnV0ZS0+bmV3KCk7CisgICAgJHNoYXJlZEF0
dHJpYnV0ZS0+bmFtZSgkbmFtZSk7CisgICAgJHNoYXJlZEF0dHJpYnV0ZS0+dHlwZShJRExQYXJz
ZXI6OmNsb25lVHlwZSgkYmFzZUF0dHJpYnV0ZS0+dHlwZSkpOworICAgIElETFBhcnNlcjo6Y29w
eUV4dGVuZGVkQXR0cmlidXRlcygkc2hhcmVkQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMs
ICRiYXNlQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworCisgICAgZGVsZXRlICRzaGFy
ZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGV9OworICAgICRzaGFyZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0lzU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSA9IDE7CisgICAgJHNoYXJlZEF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9ID0gIlByb3BlcnR5TmFtZSI7CisKKyAgICBy
ZXR1cm4gJHNoYXJlZEF0dHJpYnV0ZTsKK30KKworc3ViIENvbXB1dGVTaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVzCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAgIyBVc2UgYSBm
YWtlIGV4dGVuZGVkIGF0dHJpYnV0ZSwgU3ludGhldGljSURMQXR0cmlidXRlcywgdG8gc3RvcmUg
dGhlIG5ldyBhdHRyaWJ1dGVzCisgICAgaWYgKG5vdCBleGlzdHMgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc30pIHsKKyAgICAgICAgbXkgJXN5
bnRoZXRpY0lETEF0dHJpYnV0ZXMgPSAoICk7CisgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gKCk7
CisgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVz
fSkgeworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9KSB7CisgICAgICAgICAgICAgICAgbXkg
JG5hbWUgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlfTsKKyAgICAgICAgICAgICAgICBpZiAobm90ICRzeW50aGV0aWNJ
RExBdHRyaWJ1dGVzeyRuYW1lfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkc3ludGhldGlj
QXR0cmlidXRlID0gTWFrZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkbmFtZSwgJGF0dHJpYnV0
ZSk7CisgICAgICAgICAgICAgICAgICAgICRzeW50aGV0aWNJRExBdHRyaWJ1dGVzeyRuYW1lfSA9
IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICRzeW50aGV0aWNBdHRy
aWJ1dGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTeW50aGV0aWNJRExBdHRyaWJ1
dGVzfSA9IFxAYXR0cmlidXRlczsKKyAgICB9Cit9CisKK3N1YiBOZWVkc0RlbGVnYXRpb25Ub1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKwor
ICAgIENvbXB1dGVTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzKCRpbnRlcmZhY2UpOworCisgICAg
cmV0dXJuIHNjYWxhciBAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRp
Y0lETEF0dHJpYnV0ZXN9fTsKK30KKworc3ViIEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgQ29tcHV0ZVNo
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMoJGludGVyZmFjZSk7CisKKyAgICBmb3JlYWNoIG15ICRz
eW50aGV0aWNBdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U3lu
dGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSBlcSAkc3lu
dGhldGljQXR0cmlidXRlLT5uYW1lKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAkc3ludGhldGlj
QXR0cmlidXRlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB1bmRlZjsKK30K
Kworc3ViIE5lZWRzUHJvcGVydHlOYW1lUGFzc2VkVG9BdHRyaWJ1dGVCb2R5Cit7CisgICAgbXkg
JGF0dHJpYnV0ZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRl
ZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxX
aXRofSwgIlByb3BlcnR5TmFtZSIpOworfQorCiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDI3NTQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29u
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsNiBAQAogICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY3VzdG9tLWVsZW1lbnRz
Lmh0bWwjY2VyZWFjdGlvbnMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJD
U1NQcm9wZXJ0eSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCi0gICAgICAgIH0sCiAgICAgICAgICJD
YWNoZWRBdHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRy
aWJ1dGUiXQogICAgICAgICB9LApAQCAtMTU0LDYgKzE1MCw5IEBACiAgICAgICAgICJEZWZhdWx0
RGVmaW5lT3duUHJvcGVydHkiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJp
bnRlcmZhY2UiXQogICAgICAgICB9LAorICAgICAgICAiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdCisgICAgICAgIH0sCiAgICAgICAgICJEaXNhYmxlZEJ5UXVpcmsiOiB7CiAgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwg
ImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAiY29uc3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIi
LCAiaW5jbHVkZXMiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVj
dG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjc1NDUwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFs
Q29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIHBhcnRpYWwg
aW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0ZSBUZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0cmlidXRlIFRlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI7Ci0g
ICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yIFRlc3RDU1NQcm9wZXJ0eTsK
ICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciBUZXN0Q2FsbFRyYWNlcjsK
ICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0cmlidXRlIFRlc3RDYWxsYmFj
a0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVyZmFjZTsKICAgICBhdHRyaWJ1
dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpAQCAtOSw2ICs4LDcgQEAgcGFydGlhbCBpbnRlcmZh
Y2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZTsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0
b3IgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OwogICAgIGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
OworICAgIGF0dHJpYnV0ZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNv
bnN0cnVjdG9yIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOwogICAgIGF0
dHJpYnV0ZSBUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciBUZXN0RG9tYWluU2VjdXJpdHk7
CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdEV2ZW50
Q29uc3RydWN0b3I7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yIFRl
c3RFdmVudFRhcmdldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShy
ZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQs
NiBAQCBXZWJET01UZXN0Q0VSZWFjdGlvbnMuaDogCiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmg6IAogRE9NVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBXZWJET01UZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKLUpTVGVzdENTU1Byb3BlcnR5Lmg6IAotRE9NVGVzdENT
U1Byb3BlcnR5Lmg6IAotV2ViRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAogSlNUZXN0Q2FsbFRyYWNl
ci5oOiAKIERPTVRlc3RDYWxsVHJhY2VyLmg6IAogV2ViRE9NVGVzdENhbGxUcmFjZXIuaDogCkBA
IC03Niw2ICs3Myw5IEBAIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5oOiAKIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaDogCiBET01UZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5oOiAKIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmg6IAorSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oOiAKK0RPTVRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmg6IAorV2ViRE9NVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuaDogCiBKU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIERP
TVRlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIFdlYkRPTVRlc3REZXJpdmVkRGljdGlvbmFyeS5o
OiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJv
cGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnR5LmlkbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi10eXBlZGVmIFVTVlN0cmluZyBDU1NP
TVN0cmluZzsKLQotWwotICAgIEV4cG9zZWQ9VGVzdEdsb2JhbE9iamVjdAotXSBpbnRlcmZhY2Ug
VGVzdENTU1Byb3BlcnR5IHsKLSAgICBbQ0VSZWFjdGlvbnMsIENTU1Byb3BlcnR5PVByb3BlcnR5
TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJv
cGVydHk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK3R5cGVk
ZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOworCitbCisgICAgRXhwb3NlZD1UZXN0R2xvYmFsT2Jq
ZWN0CitdIGludGVyZmFjZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSB7
CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNo
YXJlZEF0dHJpYnV0ZTFdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09N
U3RyaW5nIHByb3BlcnR5MTsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHkyOworICAgIFtDRVJlYWN0aW9ucywgRGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFyZWRBdHRyaWJ1dGUxXSBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBwcm9wZXJ0eTM7CisgICAg
W0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNoYXJlZEF0
dHJpYnV0ZTJdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5n
IHByb3BlcnR5NDsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMl0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk1OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3Bl
cnR5LmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI5
OCArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU1Rlc3RDU1NQcm9wZXJ0eS5oIgotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKLSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KLSNpbmNsdWRl
IDx3dGYvVVJMLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLQotLy8gQXR0cmlidXRlcwotCi1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKLQotY2xhc3MgSlNU
ZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0Owot
ICAgIHN0YXRpYyBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgIHsKLSAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU+
KHZtLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0
dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Ci0gICAgfQotICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19
OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQ
cm90b3R5cGUsIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpCYXNlKTsKLQotdXNpbmcgSlNU
ZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdENTU1Byb3BlcnR5PjsKLQotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENT
U1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBVTlVTRURf
UEFSQU0odm0pOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
LX0KLQotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0Q1NTUHJvcGVydHk6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENTU1By
b3BlcnR5Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLX0KLQotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yKSB9OwotCi0v
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
Ci0gICAgeyAicHJvcGVydHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q1NTUHJv
cGVydHlfcHJvcGVydHkpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9w
ZXJ0eVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0
eVByb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBy
ZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENTU1Byb3BlcnR5OjppbmZvKCksIEpTVGVz
dENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dENTU1Byb3BlcnR5OjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5
KSB9OwotCi1KU1Rlc3RDU1NQcm9wZXJ0eTo6SlNUZXN0Q1NTUHJvcGVydHkoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q1NTUHJv
cGVydHk+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+KHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdENT
U1Byb3BlcnR5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0Q1NTUHJvcGVy
dHk+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3Rd
IGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2Jq
ZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6Y3JlYXRlUHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1
cm4gSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwg
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBK
U1Rlc3RDU1NQcm9wZXJ0eTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdENTU1Byb3Bl
cnR5Pih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RDU1NQcm9wZXJ0eTo6
Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDU1NQcm9wZXJ0eURPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpkZXN0cm95KEpTQzo6SlNDZWxs
KiBjZWxsKQotewotICAgIEpTVGVzdENTU1Byb3BlcnR5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDU1NQ
cm9wZXJ0eTo6fkpTVGVzdENTU1Byb3BlcnR5KCk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdENTU1Byb3BlcnR5KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eSYgdGhpc09i
amVjdCkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UHJvcGVydHlOYW1lKSkpKTsKLX0KLQotSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0Q1NTUHJvcGVydHk+OjpnZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW52b2tlRnVuY3RvclByb3BhZ2F0
aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eVByb3BlcnR5TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENT
U1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQ
cm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RDU1NQcm9wZXJ0eT46OnNldDxzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1
dGVOYW1lKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q1NTUHJvcGVydHk6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNl
OwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHk+IHx8ICFKU1Rlc3RDU1NQcm9wZXJ0eTo6bmVlZHNE
ZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eT4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENTU1Byb3BlcnR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7Ci0gICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENT
U1Byb3BlcnR5KTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENT
U1Byb3BlcnR5LmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIHZv
aWQgKCpteVZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNp
dG9yJikgPSBKU1Rlc3RDU1NQcm9wZXJ0eTo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKLSAgICB2
b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xv
dFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzOwotICAgIGlm
IChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQp
Ci0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5ECi0gICAgcmV0dXJu
IHNwYWNlOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBw
ZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNl
dExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBh
bmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0Q1NTUHJvcGVydHlPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBB
YnN0cmFjdFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQotewotICAg
IFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBV
TlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0
Q1NTUHJvcGVydHlPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0Q1NTUHJvcGVydHkgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdENTU1Byb3BlcnR5LT53cmFwcGVkKCks
IGpzVGVzdENTU1Byb3BlcnR5KTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
LSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RDU1NQcm9w
ZXJ0eUBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlMTVUZXN0Q1NTUHJvcGVydHlFW107IH0KLSNlbmRpZgotI2VuZGlm
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmIGlt
cGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYg
UExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3RDU1NQcm9wZXJ0eUBXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9p
ZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxNVRlc3RDU1NQcm9wZXJ0
eUVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdENTU1Byb3BlcnR5IGRv
ZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRp
b24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdENTU1Byb3BlcnR5
Pjo6dmFsdWUsICJUZXN0Q1NTUHJvcGVydHkgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAv
LyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBm
cmVlIGJ1Zywgb3IKLSAgICAvLyBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1YmNsYXNzZXMuIElmIFRl
c3RDU1NQcm9wZXJ0eSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0
b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdENTU1Byb3BlcnR5IHlvdSB0byBvcHQgb3V0
IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFs
aWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJF
TEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVy
KTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdENTU1Byb3BlcnR5JiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3RDU1NQcm9w
ZXJ0eSogSlNUZXN0Q1NTUHJvcGVydHk6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RDU1NQcm9wZXJ0eSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJv
cGVydHkuaAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MyAr
MCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdENTU1Byb3BlcnR5LmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SlNUZXN0Q1NTUHJvcGVydHkgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4g
ewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdENTU1Byb3BlcnR5
PjsKLSAgICBzdGF0aWMgSlNUZXN0Q1NTUHJvcGVydHkqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENTU1By
b3BlcnR5PiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3RDU1NQcm9wZXJ0eSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9wZXJ0eT4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0Q1NTUHJvcGVydHkqIHRvV3JhcHBlZChK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9u
QXJyYXkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0K
LSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdENTU1Byb3BlcnR5KEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmKTsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0Q1NTUHJvcGVydHlP
d25lciBmaW5hbCA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiop
IGZpbmFsOwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCkgZmluYWw7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0Q1NTUHJvcGVydHkqKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyPiBvd25lcjsKLSAgICBy
ZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0Q1NT
UHJvcGVydHkqIHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0
OwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0Q1NTUHJvcGVydHkmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0Q1NTUHJvcGVydHkqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051
bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJik7Ci1pbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRl
c3RDU1NQcm9wZXJ0eT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkg
OiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZl
cnRlclRyYWl0czxUZXN0Q1NTUHJvcGVydHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBK
U1Rlc3RDU1NQcm9wZXJ0eTsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdENT
U1Byb3BlcnR5KjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzM1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFj
cm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVj
dG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1
dGUyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMik7CisKK2NsYXNzIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZVByb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OworCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZt
KTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3Rl
bXBsYXRlPD4gdm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3RlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01Db25z
dHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKKyAgICB7ICJwcm9wZXJ0eTEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVfc2hhcmVkQXR0cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSkgfSB9LAorICAgIHsgInByb3BlcnR5MiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSB9IH0s
CisgICAgeyAicHJvcGVydHkzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
X3NoYXJlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlX3NoYXJlZEF0dHJpYnV0ZTEpIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMikgfSB9LAorICAg
IHsgInByb3BlcnR5NSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9z
aGFyZWRBdHRyaWJ1dGUyKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmluZm8oKSwgSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZVRhYmxlVmFsdWVz
LCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9
CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlOjpzX2luZm8gPSB7ICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSkgfTsKKworSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYm
IGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQor
Cit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf
YmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2Jq
ZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURP
TU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwor
fQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp+SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
Cit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTFHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnNoYXJlZEF0dHJpYnV0ZTEocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpKSkpOworfQorCitKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUxLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZT46OmdldFBhc3NpbmdQcm9wZXJ0eU5hbWU8anNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVO
YW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFNoYXJlZEF0dHJpYnV0ZTEocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0
cmlidXRlMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1l
IGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnNldFBhc3NpbmdQcm9wZXJ0eU5hbWU8c2V0
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUx
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorewor
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zaGFyZWRBdHRyaWJ1dGUyKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKSkpKTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVf
c2hhcmVkQXR0cmlidXRlMiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+OjpnZXRQYXNzaW5nUHJvcGVydHlOYW1lPGpzVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMkdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmli
dXRlTmFtZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTJTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbnZva2VGdW5j
dG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRTaGFyZWRBdHRyaWJ1dGUy
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJl
ZEF0dHJpYnV0ZTIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpzZXRQYXNzaW5nUHJvcGVydHlOYW1l
PHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMlNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCBhdHRyaWJ1dGVOYW1lKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsK
KyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCisgICAgdm9pZCAoKm15VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpT
Qzo6U2xvdFZpc2l0b3ImKSA9IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0
Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFp
bnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRhLm91
dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VO
RAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4oY2VsbCk7
CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3Qt
PndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNP
YmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJh
c2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90
VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFS
QU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFN
KHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Cisg
ICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLT53cmFwcGVkKCksIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAi
QyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTM4VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+JiYg
aW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVu
dGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29y
ZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRW
TjdXZWJDb3JlMzhUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUVbMl07Cisj
ZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRo
ZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnZhbHVlLCAiVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAg
ICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRl
ciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdl
IGN1cnJlbnRseSByZXF1aXJlIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3Jh
cChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFs
dWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlPjsKKyAgICBzdGF0aWMgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4m
JiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29u
Y3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
dWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVh
cChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAgIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4m
Jik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lciBmaW5hbCA6IHB1Ymxp
YyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopIGZpbmFsOworICAgIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7
Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQmLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSopCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5s
aW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQor
CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJik7Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
UHRyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTsKKyAgICB1c2luZyBUb1dyYXBwZWRS
ZXR1cm5UeXBlID0gVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyAr
NDEsMTMgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVz
dENFUmVhY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5o
IgotI2luY2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2FsbFRy
YWNlci5oIgogI2luY2x1ZGUgIkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5oIgogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaCIKKyNp
bmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNUZXN0RG9tYWluU2VjdXJpdHkuaCIKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRUYXJnZXQuaCIKQEAgLTE2Nyw3ICsxNjcs
NiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1RlCiAjZW5kaWYKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VS
ZWFjdGlvbnNDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpOwogI2lmIEVO
QUJMRShURVNUX0NPTkRJVElPTkFMKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yKTsKQEAg
LTE3Nyw2ICsxNzYsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RH
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVj
dG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9t
YWluU2VjdXJpdHlDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2
ZW50VGFyZ2V0Q29uc3RydWN0b3IpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHVzaW5nIEpTVGVzdEds
b2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0KIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRl
eFsyNjhdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEds
b2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDAs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAyNjcgfSwKKyAgICB7IDY1LCAtMSB9LAog
ICAgIHsgMTMsIDI2MCB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI5
MSw3ICsyOTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDM4LCAtMSB9LAogICAgIHsgMTksIDI1NyB9LAotICAgIHsg
NywgLTEgfSwKKyAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQ1LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgNiwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMzEsNyArMzMx
LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTAsIDI1NiB9
LAorICAgIHsgOSwgMjU2IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDU3LCAtMSB9LAogICAg
IHsgMTgsIC0xIH0sCkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVAogICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMTEsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQzOCw3ICs0MzgsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDEyLCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjMsMTMgKzQ2MywxMyBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDksIC0xIH0sCisgICAgeyA4
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0OCwgMjYzIH0sCi0gICAgeyA4LCAyNjIgfSwKKyAg
ICB7IDcsIDI2MiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNTA2LDcgKzUwNiw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IDU0LCAtMSB9LAogICAgIHsgNjAsIC0xIH0sCiAgICAgeyA2NCwg
LTEgfSwKLSAgICB7IDY1LCAtMSB9LAogfTsKIAogCkBAIC01MjEsNyArNTIwLDYgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogI2VuZGlmCiAgICAgeyAiVGVzdENF
UmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgIlRlc3RDU1NQcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RDYWxs
VHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAgICB7ICJUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJ
bnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTUzMyw2ICs1MzEsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICAgICB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9U
ZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RXZlbnRDb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEV2ZW50VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCkBAIC04ODks
MTcgKzg4OCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmoKICAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOwotfQotCi1KU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9i
amVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTk4
MCw2ICs5NjgsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iagog
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+Ojpn
ZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0yNzEsNiArMjcyLDE2MyBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQorCisjZWxzZQorCitlbnVtIGNsYXNzIERh
c2hQcmVmaXggeyBZZXMsIE5vIH07CisKK3N0YXRpYyBDU1NQcm9wZXJ0eUlEIGxvb2t1cENTU1By
b3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVpcmluZ0NvbnZlcnNpb24oY29uc3QgQXRvbVN0cmlu
ZyYgYXR0cmlidXRlLCBEYXNoUHJlZml4IGRhc2hQcmVmaXgpCit7CisgICAgLy8gQ29udmVyc2lv
biBpcyBpbXBsZW1lbnRpbmcgdGhlICJJREwgYXR0cmlidXRlIHRvIENTUyBwcm9wZXJ0eSBhbGdv
cml0aG0iIGZyb20gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNpZGwtYXR0cmlidXRl
LXRvLWNzcy1wcm9wZXJ0eS4KKworICAgIGNoYXIgb3V0cHV0QnVmZmVyW21heENTU1Byb3BlcnR5
TmFtZUxlbmd0aCArIDFdOworICAgIGNoYXIqIG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRC
dWZmZXI7CisgICAgY29uc3QgY2hhciogb3V0cHV0QnVmZmVyU3RhcnQgPSBvdXRwdXRCdWZmZXJD
dXJyZW50OworCisgICAgaWYgKGRhc2hQcmVmaXggPT0gRGFzaFByZWZpeDo6WWVzKQorICAgICAg
ICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0gJy0nOworCisgICAgcmVhZENoYXJhY3RlcnNGb3JQ
YXJzaW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8gYnVmZmVyKSB7CisgICAgICAgIHdoaWxlIChidWZm
ZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKSB7CisgICAgICAgICAgICBhdXRvIGMgPSAqYnVm
ZmVyKys7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzQVNDSUkoYyksICJGYWls
ZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKKyAgICAgICAg
ICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0gJy0nOworICAgICAgICAgICAgICAgICpv
dXRwdXRCdWZmZXJDdXJyZW50KysgPSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoYyk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0gYzsK
KyAgICAgICAgfQorICAgIH0pOworICAgICpvdXRwdXRCdWZmZXJDdXJyZW50ID0gJ1wwJzsKKwor
ICAgIGF1dG8gaGFzaFRhYmxlRW50cnkgPSBmaW5kUHJvcGVydHkob3V0cHV0QnVmZmVyU3RhcnQs
IG91dHB1dEJ1ZmZlckN1cnJlbnQgLSBvdXRwdXRCdWZmZXIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaGFzaFRhYmxlRW50cnksICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAl
cyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gaWQgPSBz
dGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihoYXNoVGFibGVFbnRyeS0+aWQpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoaWQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiRmFpbGVkIHRvIGNvbnZl
cnQgcHJvcGVydHkgbmFtZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisKKyAgICByZXR1cm4gaWQ7Cit9CisKK3N0YXRpYyBDU1NQcm9wZXJ0eUlEIGxvb2t1cENTU1By
b3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVpcmluZ05vQ29udmVyc2lvbihjb25zdCBBdG9tU3Ry
aW5nJiBhdHRyaWJ1dGUpCit7CisgICAgY2hhciBvdXRwdXRCdWZmZXJbbWF4Q1NTUHJvcGVydHlO
YW1lTGVuZ3RoICsgMV07CisgICAgY2hhciogb3V0cHV0QnVmZmVyQ3VycmVudCA9IG91dHB1dEJ1
ZmZlcjsKKyAgICBjb25zdCBjaGFyKiBvdXRwdXRCdWZmZXJTdGFydCA9IG91dHB1dEJ1ZmZlckN1
cnJlbnQ7CisKKyAgICByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoYXR0cmlidXRlLCBbJl0oYXV0
byBidWZmZXIpIHsKKyAgICAgICAgd2hpbGUgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5n
KCkpIHsKKyAgICAgICAgICAgIGF1dG8gYyA9ICpidWZmZXIrKzsKKyAgICAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoYyA9PSAnLScgfHwgaXNBU0NJSUxvd2VyKGMpLCAiRmFpbGVkIHRvIGNv
bnZlcnQgcHJvcGVydHkgbmFtZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0gYzsKKyAgICAgICAgfQor
ICAgIH0pOworICAgICpvdXRwdXRCdWZmZXJDdXJyZW50ID0gJ1wwJzsKKworICAgIGF1dG8gaGFz
aFRhYmxlRW50cnkgPSBmaW5kUHJvcGVydHkob3V0cHV0QnVmZmVyU3RhcnQsIG91dHB1dEJ1ZmZl
ckN1cnJlbnQgLSBvdXRwdXRCdWZmZXIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaGFzaFRh
YmxlRW50cnksICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gaWQgPSBzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihoYXNoVGFibGVFbnRyeS0+aWQpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoaWQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiRmFpbGVkIHRvIGNvbnZlcnQgcHJvcGVydHkg
bmFtZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1
cm4gaWQ7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9y
Q2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUpCit7Cisg
ICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJh
dGlvbi1jYW1lbF9jYXNlZF9hdHRyaWJ1dGUKKworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1
cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVpcmluZ0NvbnZlcnNpb24oYXR0cmlidXRl
LCBEYXNoUHJlZml4OjpObyk7CisKKyAgICAvLyBUaGUgcHJvcGVydHlJRCByZXR1cm5lZCBoZXJl
IHNob3VsZCBuZXZlciBiZSBpbnZhbGlkLCBhcyBvbmx5IHZhbGlkIHByb3BlcnR5IG5hbWVzIGZy
b20gdGhlIGJpbmRpbmdzIHNob3VsZCBldmVyIGJlIHBhc3NlZCBpbi4KKyAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiRmFpbGVkIHRvIGNv
bnZlcnQgcHJvcGVydHkgbmFtZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpOwor
fQorCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZh
bHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJhdGlvbi1jYW1lbF9jYXNlZF9hdHRyaWJ1dGUKKyAg
ICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVSZXF1
aXJpbmdDb252ZXJzaW9uKGF0dHJpYnV0ZSwgRGFzaFByZWZpeDo6Tm8pOworCisgICAgLy8gVGhl
IHByb3BlcnR5SUQgcmV0dXJuZWQgaGVyZSBzaG91bGQgbmV2ZXIgYmUgaW52YWxpZCwgYXMgb25s
eSB2YWxpZCBwcm9wZXJ0eSBuYW1lcyBmcm9tIHRoZSBiaW5kaW5ncyBzaG91bGQgZXZlciBiZSBw
YXNzZWQgaW4uCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3Bl
cnR5SW52YWxpZCwgIkZhaWxlZCB0byBjb252ZXJ0IHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmli
dXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50
ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30KKworU3RyaW5nIENTU1N0eWxlRGVj
bGFyYXRpb246OnByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZShjb25zdCBB
dG9tU3RyaW5nJiBhdHRyaWJ1dGUpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJhdGlvbi13ZWJraXRfY2FzZWRfYXR0cmlidXRlCisK
KyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVS
ZXF1aXJpbmdDb252ZXJzaW9uKGF0dHJpYnV0ZSwgRGFzaFByZWZpeDo6WWVzKTsKKworICAgIC8v
IFRoZSBwcm9wZXJ0eUlEIHJldHVybmVkIGhlcmUgc2hvdWxkIG5ldmVyIGJlIGludmFsaWQsIGFz
IG9ubHkgdmFsaWQgcHJvcGVydHkgbmFtZXMgZnJvbSB0aGUgYmluZGluZ3Mgc2hvdWxkIGV2ZXIg
YmUgcGFzc2VkIGluLgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQ
cm9wZXJ0eUludmFsaWQsICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0
dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiBnZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwocHJvcGVydHlJRCk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0
eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0
ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJh
dGlvbi13ZWJraXRfY2FzZWRfYXR0cmlidXRlCisKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29r
dXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVSZXF1aXJpbmdDb252ZXJzaW9uKGF0dHJpYnV0
ZSwgRGFzaFByZWZpeDo6WWVzKTsKKworICAgIC8vIFRoZSBwcm9wZXJ0eUlEIHJldHVybmVkIGhl
cmUgc2hvdWxkIG5ldmVyIGJlIGludmFsaWQsIGFzIG9ubHkgdmFsaWQgcHJvcGVydHkgbmFtZXMg
ZnJvbSB0aGUgYmluZGluZ3Mgc2hvdWxkIGV2ZXIgYmUgcGFzc2VkIGluLgorICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJGYWlsZWQgdG8g
Y29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVl
LCBmYWxzZSk7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVl
Rm9yRGFzaGVkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSkKK3sKKyAg
ICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0
aW9uLWRhc2hlZF9hdHRyaWJ1dGUKKworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1By
b3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVpcmluZ05vQ29udmVyc2lvbihhdHRyaWJ1dGUpOwor
CisgICAgLy8gVGhlIHByb3BlcnR5SUQgcmV0dXJuZWQgaGVyZSBzaG91bGQgbmV2ZXIgYmUgaW52
YWxpZCwgYXMgb25seSB2YWxpZCBwcm9wZXJ0eSBuYW1lcyBmcm9tIHRoZSBiaW5kaW5ncyBzaG91
bGQgZXZlciBiZSBwYXNzZWQgaW4uCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlE
ICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkZhaWxlZCB0byBjb252ZXJ0IHByb3BlcnR5IG5hbWU6
ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIGdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9p
ZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJp
YnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNs
YXJhdGlvbi1kYXNoZWRfYXR0cmlidXRlCisKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBD
U1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVSZXF1aXJpbmdOb0NvbnZlcnNpb24oYXR0cmlidXRl
KTsKKworICAgIC8vIFRoZSBwcm9wZXJ0eUlEIHJldHVybmVkIGhlcmUgc2hvdWxkIG5ldmVyIGJl
IGludmFsaWQsIGFzIG9ubHkgdmFsaWQgcHJvcGVydHkgbmFtZXMgZnJvbSB0aGUgYmluZGluZ3Mg
c2hvdWxkIGV2ZXIgYmUgcGFzc2VkIGluLgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVy
dHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBu
YW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVy
biBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxzZSk7Cit9CisKK1N0
cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSkKK3sKKyAgICAvLyBCYXNlZCBvbiBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLXdl
YmtpdF9jYXNlZF9hdHRyaWJ1dGUsIGJ1dCBtb2RpZmllZCBmb3IgZXB1Yi4KKworICAgIGF1dG8g
cHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZVJlcXVpcmluZ0Nv
bnZlcnNpb24oYXR0cmlidXRlLCBEYXNoUHJlZml4OjpZZXMpOworCisgICAgLy8gVGhlIHByb3Bl
cnR5SUQgcmV0dXJuZWQgaGVyZSBzaG91bGQgbmV2ZXIgYmUgaW52YWxpZCwgYXMgb25seSB2YWxp
ZCBwcm9wZXJ0eSBuYW1lcyBmcm9tIHRoZSBiaW5kaW5ncyBzaG91bGQgZXZlciBiZSBwYXNzZWQg
aW4uCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52
YWxpZCwgIkZhaWxlZCB0byBjb252ZXJ0IHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbChwcm9wZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9t
U3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgLy8gQmFzZWQg
b24gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNkb20tY3Nzc3R5bGVkZWNsYXJhdGlv
bi13ZWJraXRfY2FzZWRfYXR0cmlidXRlLCBidXQgbW9kaWZpZWQgZm9yIGVwdWIuCisKKyAgICBh
dXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGVSZXF1aXJp
bmdDb252ZXJzaW9uKGF0dHJpYnV0ZSwgRGFzaFByZWZpeDo6WWVzKTsKKworICAgIC8vIFRoZSBw
cm9wZXJ0eUlEIHJldHVybmVkIGhlcmUgc2hvdWxkIG5ldmVyIGJlIGludmFsaWQsIGFzIG9ubHkg
dmFsaWQgcHJvcGVydHkgbmFtZXMgZnJvbSB0aGUgYmluZGluZ3Mgc2hvdWxkIGV2ZXIgYmUgcGFz
c2VkIGluLgorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0
eUludmFsaWQsICJGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVy
bmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxzZSk7Cit9CisKICNlbmRpZgogCiBTdHJpbmcgQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6Y3NzRmxvYXQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwyNiBA
QCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IG5hbWVkSXRl
bShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TmFtZWRJdGVt
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFN0cmluZyB2YWx1ZSwgYm9vbCYgcHJvcGVydHlTdXBw
b3J0ZWQpOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkg
Y29uc3Q7CisjZWxzZQorICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCwg
YnkgdmlydHVlIG9mIGF2b2lkaW5nIHRoZSB0ZXh0IHRyYW5zZm9ybWF0aW9uIGFuZCBoYXNoIGxv
b2t1cCBjdXJyZW50bHkKKyAgICAvLyByZXF1aXJlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24sIGlm
IHdlIGNvdWxkIGNvdWxkIHNtdWdnbGUgdGhlIENTU1Byb3BlcnR5SUQgdGhyb3VnaCB0aGUgYmlu
ZGluZ3MsIHBlcmhhcHMKKyAgICAvLyBieSBlbmNvZGluZyBpdCBpbnRvIHRoZSBIYXNoVGFibGVW
YWx1ZSBhbmQgdGhlbiBwYXNzaW5nIGl0IHRvZ2V0aGVyIHdpdGggdGhlIFByb3BlcnR5TmFtZS4K
KworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBt
YXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0
aW9uLWNhbWVsX2Nhc2VkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcgcHJvcGVydHlWYWx1ZUZvckNh
bWVsQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlv
biBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
Y3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLXdlYmtpdF9jYXNlZF9hdHRyaWJ1dGUuCisg
ICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZShjb25zdCBB
dG9tU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvcldl
YktpdENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
KworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBt
YXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0
aW9uLWRhc2hlZF9hdHRyaWJ1dGUuCisgICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JEYXNoZWRJ
RExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFN0cmluZyYpOworCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJv
cGVydGllcyB0aGF0IG1hdGNoIG5vbi1zdGFuZGFyZCBFcHViLWNhc2VkLgorICAgIFN0cmluZyBw
cm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAg
Ly8gRklYTUU6IFRoaXMgbmVlZHMgdG8gcGFzcyBpbiBhIFNldHRpbmdzJiB0byB3b3JrIGNvcnJl
Y3RseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwJ
KHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2VuZGlmCiBdIGludGVy
ZmFjZSBDU1NTdHlsZURlY2xhcmF0aW9uIHsKICAgICAvLyBGSVhNRTogVGhlc2UgYXR0cmlidXRl
cyBhbmQgZnVuY3Rpb25zIHNob3VsZCB1c2UgQ1NTT01TdHJpbmcgbm90IERPTVN0cmluZy4KLQog
ICAgIFtDRVJlYWN0aW9uc10gYXR0cmlidXRlIERPTVN0cmluZyBjc3NUZXh0OwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9NU3RyaW5n
IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFr
ZXByb3AucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShy
ZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtp
bmcgY29weSkKQEAgLTE0MjcsNyArMTQyNyw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChA
bmFtZXNBbmRBbGlhc2UKICAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5h
bWVPckFsaWFzfTsKICAgICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlh
c2VzVG9OYW1leyRuYW1lfX07CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAo
IkNTU1Byb3BlcnR5PSR7cHJvcGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVW
YWx1ZXMgPSAoIkRlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1
ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUiKTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0
ZVZhbHVlcywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAk
c2V0dGluZ3NGbGFnc3skbmFtZX07CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMs
ICJFbmFibGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZs
YWdzeyRuYW1lfTsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0
ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMpOwpAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgZm9yZWFjaCBteSAk
bmFtZU9yQWxpYXMgKGdyZXAgeyAkXyA9fiAvXgogICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxp
YXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lk
eyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRlZEF0dHJp
YnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15IEBleHRl
bmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZT1wcm9wZXJ0eVZhbHVlRm9yV2ViS2l0Q2FzZWRJRExBdHRyaWJ1dGUiKTsKICAgICBwdXNoKEBl
eHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdz
eyRuYW1lfX0iKSBpZiAkc2V0dGluZ3NGbGFnc3skbmFtZX07CiAgICAgcHVzaChAZXh0ZW5kZWRB
dHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0i
KSBpZiAkcnVudGltZUZsYWdzeyRuYW1lfTsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0g
am9pbigiLCAiLCBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMpOwpAQCAtMTQ3Miw3ICsxNDcyLDcg
QEAgZm9yZWFjaCBteSAkbmFtZU9yQWxpYXMgKGdyZXAgeyAkXyA9fiAvXAogICAgIG15ICRuYW1l
ID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0
eUlkID0gJG5hbWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15
IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIp
OworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZT1wcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRlIik7CiAg
ICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0
dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OwogICAgIHB1c2go
QGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFn
c3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKQEAgLTE0OTQs
NyArMTQ5NCw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL14KICAg
ICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVPckFsaWFzfTsKICAgICBt
eSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lfX07
CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNTU1Byb3BlcnR5PSR7cHJv
cGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkRlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1ZUZvckVwdWJDYXNlZElETEF0
dHJpYnV0ZSIpOwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5
U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1l
fTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9
JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5hbWV9OwogICAgIG15
ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVl
cyk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wNC0wMiAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmlu
YXJ5IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9w
ZXJ0eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nz
cy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Rv
bS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL2Rv
bUxpc3RFbnVtZXJhdGlvbi5odG1sOgorICAgICAgICBSZW1vdmUgdGVzdHMgZm9yIGl0ZXJhdGlv
biBvcmRlciwgd2hpY2ggaXMgbm90IHN0YW5kYXJkaXplZCwgYW5kIG5vdCBjb25zaXN0ZW50IGFt
b25nCisgICAgICAgIGJyb3dzZXJzLgorCisgICAgICAgICogZmFzdC9kb20vQ1NTU3R5bGVEZWNs
YXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZGVzY3JpcHRvci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRl
Y2xhcmF0aW9uLXByb3BlcnRpZXMtZGVzY3JpcHRvci5odG1sOgorICAgICAgICBVcGRhdGUgbm93
IHRoYXQgdGhlIHByb3BlcnRpZXMgYXJlIHByb3BlciBhdHRyaWJ1dGVzIG9uIHRoZSBwcm90b3R5
cGUuCisKKyAgICAgICAgKiBqcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0
bWw6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyBhIERPTVN0cmluZ0xpc3QgYXMgdGhlIG9iamVj
dCB0aGF0IG92ZXJyaWRlcyBwdXQsIHNpbmNlIENTU1N0eWxlRGVjbGFyYXRpb24gbm8gbG9uZ2Vy
IGRvZXMuCisKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLmh0bWw6
CisgICAgICAgIFJlbW92ZSBPYmplY3Qua2V5cygpIGFzcGVjdCBvZiB0aGUgdGVzdCwgd2hpY2gg
aXMgbm8gbG9uZ2VyIG1lYW5pbmdmdWwgc2luY2UgdGhlCisgICAgICAgIHByb3BlcnRpZXMgc2hv
dWxkIG5vIGxvbmdlciBleGlzdCBpbiB0aGUgcmVzdWx0IHNldC4KKwogMjAyMS0wNC0wMiAgQW1p
ciBNYXJrIEpyICA8YW1pcl9tYXJrQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hY09TIF0gbWVk
aWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21hY29zLWlubGluZS1tZWRpYS1jb250cm9scy9tYWNv
cy1pbmxpbmUtbWVkaWEtZHJvcHBpbmctY29udHJvbHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVt
ZXJhdGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTEsNyArMTEsNiBAQCBQQVNTICdXZWJraXRUcmFuc2Zvcm0nIGlu
IGRvY3VtZW50LmJvZHkuCiBQQVNTICdib2d1cy1yYW5kb20tU3RyaW5nJyBpbiBkb2N1bWVudC5i
b2R5LnN0eWxlIGlzIGZhbHNlCiBQQVNTICdjc3NUZXh0JyBpbiBkb2N1bWVudC5ib2R5LnN0eWxl
IGlzIHRydWUKIFBBU1MgJ2dldFByb3BlcnR5Q1NTVmFsdWUnIGluIGRvY3VtZW50LmJvZHkuc3R5
bGUgaXMgdHJ1ZQotUEFTUyBUaGUgQ1NTIHByb3BlcnR5IG9yZGVyIGlzIGNvcnJlY3QKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy5odG1s
CShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVtZXJh
dGUtcHJvcGVydGllcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMyArMjMsNiBAQAogICAg
ICAgICBzaG91bGRCZUZhbHNlKCInYm9ndXMtcmFuZG9tLVN0cmluZycgaW4gZG9jdW1lbnQuYm9k
eS5zdHlsZSIpOwogICAgICAgICBzaG91bGRCZVRydWUoIidjc3NUZXh0JyBpbiBkb2N1bWVudC5i
b2R5LnN0eWxlIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiJ2dldFByb3BlcnR5Q1NTVmFsdWUn
IGluIGRvY3VtZW50LmJvZHkuc3R5bGUiKTsKLQotICAgICAgICAvLyBUZXN0IENTUyBwcm9wZXJ0
eSBvcmRlci4KLSAgICAgICAgdmFyIHN0YXJ0ZWQ7Ci0gICAgICAgIHZhciBjc3NQcm9wZXJ0eUNv
dW50ID0gMDsKLSAgICAgICAgdmFyIHByZXZpb3VzOwotICAgICAgICB2YXIgc2VlbkZpbHRlcjsK
LSAgICAgICAgZm9yICh2YXIgcCBpbiBkb2N1bWVudC5ib2R5LnN0eWxlKSB7Ci0gICAgICAgICAg
ICBpZiAocCA9PT0gImFsaWdubWVudEJhc2VsaW5lIikKLSAgICAgICAgICAgICAgICBzdGFydGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICghc3RhcnRlZCkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChwID09PSAiZmlsdGVyIikKLSAgICAgICAgICAgICAgICBz
ZWVuRmlsdGVyID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChwcmV2aW91cyAmJiBwcmV2aW91cyA+
PSBwKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSW52YWxpZCBDU1MtbWFwcGVkIHBy
b3BlcnR5IG9yZGVyOiAnIiArIHAgKyAiJyBhZnRlciAnIiArIHByZXZpb3VzICsgIiciKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgrK2Nz
c1Byb3BlcnR5Q291bnQgPD0gNDAwKQotICAgICAgICAgICAgICAgIHByZXZpb3VzID0gcDsKLSAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChzZWVuRmlsdGVyKQotICAgICAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJUaGUgQ1NTIHByb3BlcnR5IG9yZGVyIGlzIGNvcnJl
Y3QiKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlRoZSAnZmlsdGVyJyBwcm9wZXJ0eSB3YXMgbm90IGVudW1lcmF0ZWQiKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIDwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlz
dEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjUsMTQgKzY1LDYgQEAgUEFTUyByZXN1bHRBcnJheVsxXS5pdGVtIGlzIGNzc1J1bGVM
aXN0LgogUEFTUyByZXN1bHRBcnJheVsyXS5pIGlzICcyJwogUEFTUyByZXN1bHRBcnJheVsyXS5p
dGVtIGlzIGNzc1J1bGVMaXN0Lml0ZW0oMikKIAotW29iamVjdCBDU1NTdHlsZURlY2xhcmF0aW9u
XQotUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwotUEFTUyByZXN1bHRBcnJheVswXS5pdGVt
IGlzIGNzc1N0eWxlRGVjbGFyYXRpb24uaXRlbSgwKQotUEFTUyByZXN1bHRBcnJheVsxXS5pIGlz
ICcxJwotUEFTUyByZXN1bHRBcnJheVsxXS5pdGVtIGlzIGNzc1N0eWxlRGVjbGFyYXRpb24uaXRl
bSgxKQotUEFTUyByZXN1bHRBcnJheVsyXS5pIGlzICcyJwotUEFTUyByZXN1bHRBcnJheVsyXS5p
dGVtIGlzIGNzc1N0eWxlRGVjbGFyYXRpb24uaXRlbSgyKQotCiBbb2JqZWN0IENTU1ZhbHVlTGlz
dF0KIFBBU1MgcmVzdWx0QXJyYXkubGVuZ3RoIGlzIDEwCiBQQVNTIHJlc3VsdEFycmF5WzBdLmkg
aXMgJzAnCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24u
aHRtbAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVu
dW1lcmF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3NywxNyArMTc3LDYgQEAgc2hvdWxk
QmUoInJlc3VsdEFycmF5WzFdLml0ZW0iLCAiY3NzUnVsZQogc2hvdWxkQmUoInJlc3VsdEFycmF5
WzJdLmkiLCAiJzInIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaXRlbSIsICJjc3NSdWxl
TGlzdC5pdGVtKDIpIik7CiAKLS8vIENTU1N0eWxlRGVjbGFyYXRpb24KLS8vZGVidWcoZXNjYXBl
SFRNTChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3R5bGUnKSkpOwotdmFyIGNzc1N0
eWxlRGVjbGFyYXRpb24gPSBkb2N1bWVudC5zdHlsZVNoZWV0c1syXS5jc3NSdWxlc1swXS5zdHls
ZTsKLXJlc3VsdEFycmF5ID0gaXRlcmF0ZUxpc3QoY3NzU3R5bGVEZWNsYXJhdGlvbik7Ci1zaG91
bGRCZSgicmVzdWx0QXJyYXlbMF0uaSIsICInMCciKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVsw
XS5pdGVtIiwgImNzc1N0eWxlRGVjbGFyYXRpb24uaXRlbSgwKSIpOwotc2hvdWxkQmUoInJlc3Vs
dEFycmF5WzFdLmkiLCAiJzEnIik7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaXRlbSIsICJj
c3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMSkiKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5p
IiwgIicyJyIpOwotc2hvdWxkQmUoInJlc3VsdEFycmF5WzJdLml0ZW0iLCAiY3NzU3R5bGVEZWNs
YXJhdGlvbi5pdGVtKDIpIik7Ci0KIC8vIENTU1ZhbHVlTGlzdAogdmFyIGNzc1ZhbHVlTGlzdCA9
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdv
bCcpWzBdKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCdib3JkZXItc3BhY2luZycpOwogcmVzdWx0QXJy
YXkgPSBpdGVyYXRlTGlzdChjc3NWYWx1ZUxpc3QpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZGVz
Y3JpcHRvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
Q1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZGVzY3Jp
cHRvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRl
c2NyaXB0b3ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsOCBAQCBUaGlz
IHRlc3RzIHRoZSBkZXNjcmlwdG9yIG9mIENTU1N0eWxlRGVjCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKIAotUEFTUyBkZXNjcmlwdG9yWyd3cml0YWJsZSddIGlzIHRydWUKK1BBU1MgZGVz
Y3JpcHRvclsnZ2V0J10gaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgZGVzY3JpcHRv
clsnc2V0J10gaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KIFBBU1MgZGVzY3JpcHRvclsnZW51
bWVyYWJsZSddIGlzIHRydWUKIFBBU1MgZGVzY3JpcHRvclsnY29uZmlndXJhYmxlJ10gaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMt
ZGVzY3JpcHRvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0NTU1N0
eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3Iu
aHRtbAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ1NTU3R5bGVE
ZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZGVzY3JpcHRvci5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOSBAQAogICAgIDxzY3JpcHQ+CiAgICAgICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBkZXNjcmlwdG9yIG9mIENTU1N0eWxlRGVjbGFyYXRp
b24gcHJvcGVydGllcy4iKTsKIAotICAgICAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQuYm9keS5zdHlsZSwgJ2NvbG9yJyk7Ci0gICAg
ICAgIHNob3VsZEJlVHJ1ZSgiZGVzY3JpcHRvclsnd3JpdGFibGUnXSIpOworICAgICAgICB2YXIg
ZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZG9jdW1lbnQuYm9k
eS5zdHlsZS5fX3Byb3RvX18sICdjb2xvcicpOworICAgICAgICBzaG91bGRCZVR5cGUoImRlc2Ny
aXB0b3JbJ2dldCddIiwgIkZ1bmN0aW9uIik7CisgICAgICAgIHNob3VsZEJlVHlwZSgiZGVzY3Jp
cHRvclsnc2V0J10iLCAiRnVuY3Rpb24iKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCJkZXNjcmlw
dG9yWydlbnVtZXJhYmxlJ10iKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCJkZXNjcmlwdG9yWydj
b25maWd1cmFibGUnXSIpOwogICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDQtMDIgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBjb21waWxlIHRp
bWUgYW5kIGJpbmFyeSBzaXplIGNvc3Qgb2YgZW5hYmxpbmcgcHJvcGVyIENTU1N0eWxlRGVjbGFy
YXRpb24gcHJvcGVydHkgYWNjZXNzIGJlaGF2aW9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1
MTM2ODg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGUgdGVzdCByZXN1bHQgbm93IHRoYXQg
aXQgaXMgcGFzc2luZy4KKwogMjAyMS0wNC0wMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIFtSZXBsYWNlYWJsZV0gZXh0ZW5kZWQgYXR0
cmlidXRlIGZyb20gYGRvY3VtZW50LmFsbGAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY29tcGF0L2Nzcy1zdHlsZS1kZWNsYXJhdGlvbi1hbGlhcy1l
bnVtZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21wYXQvY3NzLXN0eWxlLWRlY2xhcmF0aW9uLWFs
aWFzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21wYXQvY3NzLXN0eWxlLWRl
Y2xhcmF0aW9uLWFsaWFzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMgQEAKIAotRkFJTCBBbGlhc2VzIGVudW1lcmF0ZWQgb24gQ1NTU3R5bGVEZWNs
YXJhdGlvbiBhc3NlcnRfdHJ1ZTogQWxpYXMgd2Via2l0VHJhbnNmb3JtIHNlZW4gZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKK1BBU1MgQWxpYXNlcyBlbnVtZXJhdGVkIG9uIENTU1N0eWxlRGVjbGFy
YXRpb24KIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3Nzb20vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIENTUyBUZXN0OiBDU1NT
dHlsZURlY2xhcmF0aW9uIHByb3BlcnRpZXMgYXJlIGRlZmluZWQgYXMgV2ViSURMIGF0dHJpYnV0
ZXMsIG5vdCB1c2luZyBnZXRPd25Qcm9wZXJ0eU5hbWVzKCkgYXNzZXJ0X2ZhbHNlOiBzaG91bGRu
J3QgaGF2ZSBhbiBvd24gcHJvcGVydHkgZm9yIFdlYklETCBhdHRyaWJ1dGVzIGV4cGVjdGVkIGZh
bHNlIGdvdCB0cnVlCitQQVNTIENTUyBUZXN0OiBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnRp
ZXMgYXJlIGRlZmluZWQgYXMgV2ViSURMIGF0dHJpYnV0ZXMsIG5vdCB1c2luZyBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKCkKIApJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL3B1dC1vdmVycmlkZS1zaG91
bGQtbm90LXVzZS1pYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2RvbS9wdXQt
b3ZlcnJpZGUtc2hvdWxkLW5vdC11c2UtaWMuaHRtbAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5
b3V0VGVzdHMvanMvZG9tL3B1dC1vdmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC04LDEwICs4LDEwIEBACiA8c2NyaXB0PgogICAgIHRlc3QoZnVuY3Rpb24o
KSB7CiAgICAgICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25lZCgpIHsKLSAgICAgICAgICAgIHN0eWxl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpLnN0eWxlOworICAgICAgICAgICAgZGF0YXNl
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKS5kYXRhc2V0OwogICAgICAgICAgICAgZm9y
KHZhciBpID0gMDsgaSA8IDIwOyBpKyspCi0gICAgICAgICAgICAgICAgc3R5bGVbJ3AnK2ldID0g
aTsKLSAgICAgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgICAgICAgICAgICBkYXRhc2V0Wydw
JytpXSA9IGk7CisgICAgICAgICAgICByZXR1cm4gZGF0YXNldDsKICAgICAgICAgfQogCiAgICAg
ICAgIGZ1bmN0aW9uIHB1dHRlcihvKSB7CkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90
cmFuc2l0aW9ucy1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjc1NDUwKQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw2IEBAIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFZhbGlkIHRyYW5zaXRpb24tcHJvcGVydHkgdmFs
dWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAnYWxsJwogUEFT
UyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAnYWxsJwotUEFTUyBP
YmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvblByb3BlcnR5JykgaXMgbm90IC0x
Ci1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHknKSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgaXMgJ25vbmUnCiBQQVNT
IGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3BlcnR5IGlzICdub25lJwogUEFTUyBzdHlsZS53
ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkgaXMgJ25vbmUnCkBAIC0xMDAsOCArOTgsNiBAQCBQQVNT
IGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvblByb3BlCiBWYWxpZCB0cmFuc2l0aW9uLWR1
cmF0aW9uIHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gaXMg
JzBzJwogUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiBpcyAnMHMn
Ci1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uRHVyYXRpb24nKSBp
cyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbicpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiBpcyAnMHMn
CiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uIGlzICcwcycKIFBBU1Mgc3R5
bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIGlzICcwcycKQEAgLTE1MCw4ICsxNDYsNiBAQCBQ
QVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0CiBWYWxpZCB0cmFuc2l0aW9u
LXRpbWluZy1mdW5jdGlvbiB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblRp
bWluZ0Z1bmN0aW9uIGlzICdlYXNlJwogUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbiBpcyAnZWFzZScKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4
T2YoJ3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbicpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5
cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykgaXMgLTEK
IFBBU1Mgc3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXInCiBQQVNTIGNv
bXB1dGVkU3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXInCiBQQVNTIHN0
eWxlLndlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiBpcyAnbGluZWFyJwpAQCAtMzAwLDgg
KzI5NCw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uVGltaW4KIFZhbGlk
IHRyYW5zaXRpb24tZGVsYXkgdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25E
ZWxheSBpcyAnMHMnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5IGlz
ICcwcycKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25EZWxheScp
IGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNp
dGlvbkRlbGF5JykgaXMgLTEKIFBBU1Mgc3R5bGUudHJhbnNpdGlvbkRlbGF5IGlzICcwcycKIFBB
U1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRGVsYXkgaXMgJzBzJwogUEFTUyBzdHlsZS53ZWJr
aXRUcmFuc2l0aW9uRGVsYXkgaXMgJzBzJwpAQCAtMzUwLDggKzM0Miw2IEBAIFBBU1MgY29tcHV0
ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRGVsYXkKIFZhbGlkIHRyYW5zaXRpb24gc2hvcnRoYW5k
IHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uIGlzICdhbGwgMHMgZWFzZSAw
cycKIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uIGlzICdhbGwgMHMgZWFzZSAw
cycKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb24nKSBpcyBub3Qg
LTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb24nKSBp
cyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uIGlzICdub25lJwogUEFTUyBjb21wdXRlZFN0eWxl
LnRyYW5zaXRpb24gaXMgJ25vbmUgMHMgZWFzZSAwcycKIFBBU1Mgc3R5bGUud2Via2l0VHJhbnNp
dGlvbiBpcyAnbm9uZScKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25z
LXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFu
c2l0aW9ucy1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL3Ry
YW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAs
OCArMzAsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uUHJvcGVyCiBzaG91
bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkiLCAiJ2FsbCciKTsK
IAogc3R5bGUudHJhbnNpdGlvblByb3BlcnR5ID0gIm5vbmUiOwotc2hvdWxkTm90QmUoIk9iamVj
dC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uUHJvcGVydHknKSIsICItMSIpOwotc2hv
dWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHknKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSIsICInbm9u
ZSciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSIsICInbm9u
ZSciKTsKIHNob3VsZEJlKCJzdHlsZS53ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkiLCAiJ25vbmUn
Iik7CkBAIC0xNzYsOCArMTc0LDYgQEAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlv
bkR1cmF0aQogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0aW9u
IiwgIicwcyciKTsKIAogc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gIjBzIjsKLXNob3VsZE5v
dEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvbkR1cmF0aW9uJykiLCAi
LTEiKTsKLXNob3VsZEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uJykiLCAiLTEiKTsKIHNob3VsZEJlKCJzdHlsZS50cmFuc2l0aW9uRHVyYXRp
b24iLCAiJzBzJyIpOwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbkR1cmF0aW9u
IiwgIicwcyciKTsKIHNob3VsZEJlKCJzdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24iLCAi
JzBzJyIpOwpAQCAtMjU2LDggKzI1Miw2IEBAIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5z
aXRpb25UaW1pbmcKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbiIsICInZWFzZSciKTsKIAogc3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
ID0gImxpbmVhciI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3Ry
YW5zaXRpb25UaW1pbmdGdW5jdGlvbicpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMo
c3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbicpIiwgIi0xIik7
CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidsaW5lYXInIik7
CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2xp
bmVhciciKTsKIHNob3VsZEJlKCJzdHlsZS53ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24i
LCAiJ2xpbmVhciciKTsKQEAgLTQ4NSw4ICs0NzksNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHls
ZS50cmFuc2l0aW9uRGVsYXkiCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0
aW9uRGVsYXkiLCAiJzBzJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uRGVsYXkgPSAiMHMiOwotc2hv
dWxkTm90QmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uRGVsYXknKSIs
ICItMSIpOwotc2hvdWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFu
c2l0aW9uRGVsYXknKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRpb25EZWxheSIs
ICInMHMnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRGVsYXkiLCAiJzBz
JyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheSIsICInMHMnIik7CkBA
IC01NjUsOCArNTU3LDYgQEAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbiIsICIn
YQogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbiIsICInYWxsIDBzIGVh
c2UgMHMnIik7CiAKIHN0eWxlLnRyYW5zaXRpb24gPSAibm9uZSI7Ci1zaG91bGROb3RCZSgiT2Jq
ZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb24nKSIsICItMSIpOwotc2hvdWxkQmUo
Ik9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uJykiLCAiLTEiKTsK
IHNob3VsZEJlKCJzdHlsZS50cmFuc2l0aW9uIiwgIidub25lJyIpOwogc2hvdWxkQmUoImNvbXB1
dGVkU3R5bGUudHJhbnNpdGlvbiIsICInbm9uZSAwcyBlYXNlIDBzJyIpOwogc2hvdWxkQmUoInN0
eWxlLndlYmtpdFRyYW5zaXRpb24iLCAiJ25vbmUnIik7Cg==
</data>
<flag name="commit-queue"
          id="444949"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425107</attachid>
            <date>2021-04-03 12:20:25 -0700</date>
            <delta_ts>2021-04-03 13:00:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222518-20210403122023.patch</filename>
            <type>text/plain</type>
            <size>114513</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTAyICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6
ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFj
Y2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oOgorICAgICAgICBUdXJuIG9uIEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElF
U19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OLCBub3cgdGhhdCB3ZSBoYXZlIGl0IHVzaW5nIHNo
YXJlZAorICAgICAgICBkZWxlZ2F0aW5nIHN5bnRoZXRpYyBhdHRyaWJ1dGVzLgorCiAyMDIxLTA0
LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
YWJsZSBQcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05lYXI2MEZQU0VuYWJsZWQgYnkgZGVmYXVs
dApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3
LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9Q
RVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCi0jZGVmaW5lIEVOQUJMRV9BVFRSSUJV
VEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OIDAKKyNkZWZpbmUg
RU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJ
T04gMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw5NyBAQAorMjAyMS0wNC0wMiAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5
IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0
eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtaW1wbGVtZW50
IHByb3BlciAobm90IHVzaW5nIG5hbWVkLWdldHRlcnMpIHN1cHBvcnQgZm9yIHRoZSBDU1NTdHls
ZURlY2xhcmF0aW9uIGJpbmRpbmdzCisgICAgICAgIHVzaW5nIGEgbmV3IERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUgZXh0ZW5kZWQgYXR0dHJpYnV0ZSB3aGljaCBhbGxvd3MgSURM
IGF0dHJpYnV0ZXMKKyAgICAgICAgdG8gc2hhcmUgYSBjdXN0b20gZ2V0dGVyIC8gc2V0dGVyIGlt
cGxlbWVudGF0aW9uIGFuZCBkZWxlZ2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbiB0byBpdC4gV2hl
bgorICAgICAgICB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoZSBzeW50aGV0aWMgYXR0cmli
dXRlJ3MgaW1wbGVtZW50YXRpb24gaXMgcGFzc2VkIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eQorICAg
ICAgICBuYW1lIHNvIGl0IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBpdC4K
KworICAgICAgICBXZSB1c2UgdGhpcyBmb3IgQ1NTU3R5bGVEZWNsYXJhdGlvbiBieSBicmVha2lu
ZyB0aGUgaHVnZSBsaXN0IG9mIGdlbmVyYXRlZCBwcm9wZXJ0aWVzIGludG8KKyAgICAgICAgZm91
ciBncm91cHMsIGVhY2ggd2l0aCB0aGVpciBvd24gc3ludGhldGljIGF0dHJpYnV0ZS4gVGhlIGdy
b3VwcyBhcmUgYmFzZWQgb24gdGhlIGRpZmZlcmVudAorICAgICAgICB0cmFuc2Zvcm1hdGlvbiBy
dWxlcyBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGU6OnNldFBhc3NpbmdQcm9wZXJ0eU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXRQYXNzaW5nUHJvcGVydHlO
YW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOgorICAgICAgICAoR2V0QXR0cmlidXRlU2V0
dGVyTmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdl
bmVyYXRlU2hhcmVkU3ludGhldGljQXR0cmlidXRlRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRy
aWJ1dGVHZXR0ZXJBbmRTZXR0ZXJEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJp
YnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0
ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKE1ha2VTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgor
ICAgICAgICAoQ29tcHV0ZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMpOgorICAgICAgICAoTmVl
ZHNEZWxlZ2F0aW9uVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgorICAgICAgICAoR2V0U2hh
cmVkU3ludGhldGljQXR0cmlidXRlKToKKyAgICAgICAgKE5lZWRzUHJvcGVydHlOYW1lUGFzc2Vk
VG9BdHRyaWJ1dGVCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9i
YWxDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDU1NQcm9wZXJ0eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29y
ZTo6SURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+
OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
X3NoYXJlZEF0dHJpYnV0ZTFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZTo6YW5hbHl6ZUhlYXApOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
OjpzdWJzcGFjZUZvcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6d3JhcHBlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29u
c3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVy
dHlDb25zdHJ1Y3RvckdldHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
LmlkbDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlUmVxdWlyaW5n
Q29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExB
dHRyaWJ1dGVSZXF1aXJpbmdOb0NvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZv
ckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JXZWJL
aXRDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0
aW9uOjpwcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlW
YWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9tYWtl
cHJvcC5wbDoKKwogMjAyMS0wNC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBQZW5kaW5nSW1hZ2VCaXRtYXAgZ2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBz
Y3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMy
LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CiBjbGFzcyBJRExBdHRyaWJ1dGUgewog
cHVibGljOgogICAgIHVzaW5nIFNldHRlciA9IGJvb2woSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Q2xhc3MmLCBKU0M6OkpTVmFsdWUpOworICAgIHVzaW5nIFNldHRlclBhc3NpbmdQcm9wZXJ0eU5h
bWUgPSBib29sKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiAgICAgdXNpbmcgU3RhdGljU2V0dGVyID0gYm9vbChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpT
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xhc3MmKTsKKyAgICB1c2luZyBHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0NsYXNzJiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHVzaW5nIFN0YXRpY0dldHRlciA9IEpT
Qzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAgICAgCiAgICAgc3RhdGljIEpTQ2xh
c3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwpAQCAt
NTMsNyArNTUsMjQgQEAgcHVibGljOgogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0aCBgc2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBs
aWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxh
bWJkYS4KKyAgICB0ZW1wbGF0ZTxTZXR0ZXJQYXNzaW5nUHJvcGVydHlOYW1lIHNldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6VGhyb3c+CisgICAgc3RhdGljIGJvb2wgc2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKworICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJv
dykKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVy
VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZv
KCksIGF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVOYW1lKSkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPFN0YXRpY1NldHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
IHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRp
YyBib29sIHNldFN0YXRpYyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpAQCAtODMsNyArMTAyLDMyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNDOjpKU1ZhbHVlOjpl
bmNvZGUoZ2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0KSkpKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0
aCBgZ2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBsaWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxh
dGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxhbWJkYS4KKyAgICB0ZW1wbGF0ZTxHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lIGdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxk
VGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CisgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgZ2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkpOworCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgeworICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNDbGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6
OmVuY29kZShnZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIGF0dHJpYnV0
ZU5hbWUpKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJv
cigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRy
aWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhy
b3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UpCisgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCByZWplY3RQcm9taXNlV2l0
aEdldHRlclR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCksIGF0
dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpT
Qzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgYXR0cmlidXRlTmFtZSkpKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB0ZW1wbGF0ZTxT
dGF0aWNHZXR0ZXIgZ2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBnZXRTdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xODQwLDYgKzE4NDAsNyBAQCBz
dWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKSA9IEBfOwogCisgICAgcmV0dXJuIEdldEF0dHJpYnV0ZUdldHRlck5h
bWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpIGlmIElzSlNCdWlsdGlu
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRyaWJ1dGVPckZ1
bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiBNYW5nbGVB
dHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSAuICJDb25zdHJ1Y3RvciIg
aWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwpA
QCAtMTg1MCw2ICsxODUxLDcgQEAgc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIHsKICAgICBt
eSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKIAorICAgIHJldHVy
biBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsIEdldFNoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgaWYgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZX07CiAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKSBpZiBJc0pTQnVpbHRp
bigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRy
aWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0
YXRpYzsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xh
c3NOYW1lKSAuIE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPm5hbWUp
OwpAQCAtNDI4MCwyNCArNDI4MiwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUigke2NvbnN0cnVjdG9yR2V0dGVyfSk7XG4iKTsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9fSkgeworICAgICAgICAgICAg
ICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29u
dGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OwogCi0g
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtcbiIp
OwotICAgICAgICAgICAgdW5sZXNzIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKSkgewotICAgICAgICAg
ICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsbHlSZWFkV3JpdGV9OwotICAgICAgICAgICAgICAgIGlmICgk
cmVhZFdyaXRlQ29uZGl0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHJlYWRXcml0
ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJHJlYWRXcml0ZUNvbmRpdGlvbmFsKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtyZWFkV3JpdGVDb25kaXRpb25h
bFN0cmluZ31cbiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBteSAkc2V0
dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKCR7c2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0
dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuIik7CkBAIC00ODc2LDcgKzQ4NzAsMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAorICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgICAgICBHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZVNl
dHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUg
KEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
fTsKKwogICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24oXEBpbXBsQ29u
dGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIEdlbmVy
YXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICB9CkBAIC01MjA3LDcgKzUyMTAsOCBAQCBzdWIg
R2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgbXkgQHNpZ25hdHVyZUFy
Z3VtZW50cyA9ICgpOwogICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0Iik7CiAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRz
LCAiJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0IikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwot
ICAgIAorICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIlByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUiKSBpZiBOZWVkc1Byb3BlcnR5TmFtZVBhc3NlZFRvQXR0cmlidXRlQm9keSgkYXR0cmli
dXRlKTsKKwogICAgIG15ICRuZWVkU2VjdXJpdHlDaGVjayA9ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcn07CiAgICAgbXkgJGhhc0N1c3RvbUdl
dHRlciA9IEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlKTsKICAgICBteSAkaXNFdmVudEhhbmRs
ZXIgPSAkYXR0cmlidXRlLT50eXBlLT5uYW1lIGVxICJFdmVudEhhbmRsZXIiOwpAQCAtNTI2OSwx
MyArNTI3Myw2IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1
cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtc
biIpOwogICAgICAgICB9Ci0gICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q1NTUHJvcGVydHl9KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5
TmFtZXMuaCJ9ID0gMTsKLSAgICAgICAgbXkgJHByb3BlcnR5SUQgPSAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07Ci0KLSAgICAgICAgbXkgJHRvSlNFeHByZXNz
aW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZh
Y2UsICJpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJ
RH0pIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAoJHt0b0pTRXhwcmVzc2lvbn0pKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFs
dWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiLmdldCgpKVxuIik7CkBA
IC01MzI0LDYgKzUzMjEsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5l
RGVmCiAgICAgCiAgICAgbXkgJGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lID0gImdldCI7CiAgICAg
JGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1dGUtPmlzU3Rh
dGljOworICAgICRjYWxsQXR0cmlidXRlR2V0dGVyTmFtZSAuPSAiUGFzc2luZ1Byb3BlcnR5TmFt
ZSIgaWYgTmVlZHNQcm9wZXJ0eU5hbWVQYXNzZWRUb0F0dHJpYnV0ZUJvZHkoJGF0dHJpYnV0ZSk7
CiAgICAgCiAgICAgbXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBs
YXRlUGFyYW1ldGVycywgJGF0dHJpYnV0ZUdldHRlckJvZHlOYW1lKTsKQEAgLTUzNDEsNiArNTMz
OSwyOSBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0
dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24KK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgcmV0dXJuIGlmIElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworCisgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZSk7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdl
dHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9
KTtcbiIpOworICAgIHVubGVzcyAoSXNSZWFkb25seSgkYXR0cmlidXRlKSB8fCAkY29kZUdlbmVy
YXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKKyAgICAgICAgbXkg
JHJlYWRXcml0ZUNvbmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q29uZGl0aW9uYWxseVJlYWRXcml0ZX07CisgICAgICAgIGlmICgkcmVhZFdyaXRlQ29uZGl0aW9u
YWwpIHsKKyAgICAgICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRy
ZWFkV3JpdGVDb25kaXRpb25hbCk7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIj
aWYgJHtyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZ31cbiIpOworICAgICAgICB9CisgICAgICAg
IG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUigke3NldHRlcn0pO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOworICAgIH0K
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKK30KKwogc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyRGVmaW5pdGlvbgogewogICAgIG15
ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87
CkBAIC01MzcwLDYgKzUzOTEsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVm
aW5pdGlvCiAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QiKTsKICAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICIke2Ns
YXNzTmFtZX0mIHRoaXNPYmplY3QiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcHVz
aChAc2lnbmF0dXJlQXJndW1lbnRzLCAiSlNWYWx1ZSB2YWx1ZSIpOworICAgIHB1c2goQHNpZ25h
dHVyZUFyZ3VtZW50cywgIlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUiKSBpZiBOZWVkc1Byb3Bl
cnR5TmFtZVBhc3NlZFRvQXR0cmlidXRlQm9keSgkYXR0cmlidXRlKTsKIAogICAgIG15ICRuZWVk
U2VjdXJpdHlDaGVjayA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2Vj
dXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2Vj
dXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2Vj
dXJpdHlPblNldHRlcn07CiAgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IEhhc0N1c3RvbVNldHRl
cigkYXR0cmlidXRlKTsKQEAgLTU0MTksMjEgKzU0NDEsNiBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1
dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2
bS5oZWFwLndyaXRlQmFycmllcigmdGhpc09iamVjdCwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZSh2YWx1ZSk7XG5cbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHRydWU7XG4iKTsKLSAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX0p
IHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siQ1NTUHJvcGVydHlOYW1lcy5oIn0gPSAxOwotCi0g
ICAgICAgIG15ICRwcm9wZXJ0eUlEID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q1NTUHJvcGVydHl9OwotCi0gICAgICAgIG15ICRleGNlcHRpb25UaHJvd2VyID0gR2V0QXR0cmli
dXRlRXhjZXB0aW9uVGhyb3dlcigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgbXkg
JHRvTmF0aXZlRXhwcmVzc2lvbiA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXR0cmli
dXRlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25h
bH0sICImbGV4aWNhbEdsb2JhbE9iamVjdCIsICJsZXhpY2FsR2xvYmFsT2JqZWN0IiwgInRoaXNP
YmplY3QiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkiLCAkZXhjZXB0aW9uVGhyb3dlcik7
Ci0KLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byBuYXRpdmVWYWx1ZSA9ICR7dG9OYXRpdmVFeHByZXNzaW9ufTtcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5JHtwcm9wZXJ0eUlEfSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgfSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiB0cnVlO1xuIik7CiAgICAgfSBlbHNpZiAoJGlzUmVwbGFjZWFibGUpIHsKICAgICAgICAg
bXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3BlcnR5LlxuIik7CkBAIC01NTIxLDYgKzU1
MjgsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgCiAg
ICAgbXkgJGNhbGxBdHRyaWJ1dGVTZXR0ZXJOYW1lID0gInNldCI7CiAgICAgJGNhbGxBdHRyaWJ1
dGVTZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgICRj
YWxsQXR0cmlidXRlU2V0dGVyTmFtZSAuPSAiUGFzc2luZ1Byb3BlcnR5TmFtZSIgaWYgTmVlZHNQ
cm9wZXJ0eU5hbWVQYXNzZWRUb0F0dHJpYnV0ZUJvZHkoJGF0dHJpYnV0ZSk7CiAgICAgCiAgICAg
bXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVy
cywgJGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lKTsKQEAgLTYwMDMsNiArNjAxMSwxMCBAQCBzdWIg
R2VuZXJhdGVDYWxsV2l0aAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkY2FsbFdpdGgsICJXb3JsZCIpKSB7CiAgICAgICAgIHB1c2goQGNhbGxXaXRo
QXJncywgIndvcmxkRm9yRE9NT2JqZWN0KCR7dGhpc1JlZmVyZW5jZX0pIik7CiAgICAgfQorICAg
IGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgs
ICJQcm9wZXJ0eU5hbWUiKSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01Db252
ZXJ0U3RyaW5ncy5oIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgInByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpIik7CisgICAgfQogCiAgICAgcmV0dXJuIEBjYWxs
V2l0aEFyZ3M7CiB9CkBAIC04MDQ1LDQgKzgwNTcsNzMgQEAgc3ViIEdlbmVyYXRlQ3VzdG9tRWxl
bWVudFJlYWN0aW9uc1N0YWNrSQogICAgIH0KIH0KIAorc3ViIE1ha2VTaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUKK3sKKyAgICBteSAoJG5hbWUsICRiYXNlQXR0cmlidXRlKSA9IEBfOworCisgICAg
bXkgJHNoYXJlZEF0dHJpYnV0ZSA9IElETEF0dHJpYnV0ZS0+bmV3KCk7CisgICAgJHNoYXJlZEF0
dHJpYnV0ZS0+bmFtZSgkbmFtZSk7CisgICAgJHNoYXJlZEF0dHJpYnV0ZS0+dHlwZShJRExQYXJz
ZXI6OmNsb25lVHlwZSgkYmFzZUF0dHJpYnV0ZS0+dHlwZSkpOworICAgIElETFBhcnNlcjo6Y29w
eUV4dGVuZGVkQXR0cmlidXRlcygkc2hhcmVkQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMs
ICRiYXNlQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworCisgICAgZGVsZXRlICRzaGFy
ZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGV9OworICAgICRzaGFyZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0lzU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSA9IDE7CisgICAgJHNoYXJlZEF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9ID0gIlByb3BlcnR5TmFtZSI7CisKKyAgICBy
ZXR1cm4gJHNoYXJlZEF0dHJpYnV0ZTsKK30KKworc3ViIENvbXB1dGVTaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVzCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAgIyBVc2UgYSBm
YWtlIGV4dGVuZGVkIGF0dHJpYnV0ZSwgU3ludGhldGljSURMQXR0cmlidXRlcywgdG8gc3RvcmUg
dGhlIG5ldyBhdHRyaWJ1dGVzCisgICAgaWYgKG5vdCBleGlzdHMgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc30pIHsKKyAgICAgICAgbXkgJXN5
bnRoZXRpY0lETEF0dHJpYnV0ZXMgPSAoICk7CisgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gKCk7
CisgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVz
fSkgeworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9KSB7CisgICAgICAgICAgICAgICAgbXkg
JG5hbWUgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlfTsKKyAgICAgICAgICAgICAgICBpZiAobm90ICRzeW50aGV0aWNJ
RExBdHRyaWJ1dGVzeyRuYW1lfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkc3ludGhldGlj
QXR0cmlidXRlID0gTWFrZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkbmFtZSwgJGF0dHJpYnV0
ZSk7CisgICAgICAgICAgICAgICAgICAgICRzeW50aGV0aWNJRExBdHRyaWJ1dGVzeyRuYW1lfSA9
IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICRzeW50aGV0aWNBdHRy
aWJ1dGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTeW50aGV0aWNJRExBdHRyaWJ1
dGVzfSA9IFxAYXR0cmlidXRlczsKKyAgICB9Cit9CisKK3N1YiBOZWVkc0RlbGVnYXRpb25Ub1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKwor
ICAgIENvbXB1dGVTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzKCRpbnRlcmZhY2UpOworCisgICAg
cmV0dXJuIHNjYWxhciBAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRp
Y0lETEF0dHJpYnV0ZXN9fTsKK30KKworc3ViIEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgQ29tcHV0ZVNo
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMoJGludGVyZmFjZSk7CisKKyAgICBmb3JlYWNoIG15ICRz
eW50aGV0aWNBdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U3lu
dGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSBlcSAkc3lu
dGhldGljQXR0cmlidXRlLT5uYW1lKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAkc3ludGhldGlj
QXR0cmlidXRlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB1bmRlZjsKK30K
Kworc3ViIE5lZWRzUHJvcGVydHlOYW1lUGFzc2VkVG9BdHRyaWJ1dGVCb2R5Cit7CisgICAgbXkg
JGF0dHJpYnV0ZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRl
ZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxX
aXRofSwgIlByb3BlcnR5TmFtZSIpOworfQorCiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDI3NTQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29u
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsNiBAQAogICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY3VzdG9tLWVsZW1lbnRz
Lmh0bWwjY2VyZWFjdGlvbnMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJD
U1NQcm9wZXJ0eSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCi0gICAgICAgIH0sCiAgICAgICAgICJD
YWNoZWRBdHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRy
aWJ1dGUiXQogICAgICAgICB9LApAQCAtMTU0LDYgKzE1MCw5IEBACiAgICAgICAgICJEZWZhdWx0
RGVmaW5lT3duUHJvcGVydHkiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJp
bnRlcmZhY2UiXQogICAgICAgICB9LAorICAgICAgICAiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdCisgICAgICAgIH0sCiAgICAgICAgICJEaXNhYmxlZEJ5UXVpcmsiOiB7CiAgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwg
ImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAiY29uc3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIi
LCAiaW5jbHVkZXMiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVj
dG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjc1NDUwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFs
Q29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIHBhcnRpYWwg
aW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0ZSBUZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0cmlidXRlIFRlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI7Ci0g
ICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yIFRlc3RDU1NQcm9wZXJ0eTsK
ICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciBUZXN0Q2FsbFRyYWNlcjsK
ICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0cmlidXRlIFRlc3RDYWxsYmFj
a0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVyZmFjZTsKICAgICBhdHRyaWJ1
dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpAQCAtOSw2ICs4LDcgQEAgcGFydGlhbCBpbnRlcmZh
Y2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZTsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0
b3IgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OwogICAgIGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
OworICAgIGF0dHJpYnV0ZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNv
bnN0cnVjdG9yIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOwogICAgIGF0
dHJpYnV0ZSBUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciBUZXN0RG9tYWluU2VjdXJpdHk7
CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdEV2ZW50
Q29uc3RydWN0b3I7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yIFRl
c3RFdmVudFRhcmdldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShy
ZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQs
NiBAQCBXZWJET01UZXN0Q0VSZWFjdGlvbnMuaDogCiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmg6IAogRE9NVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBXZWJET01UZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKLUpTVGVzdENTU1Byb3BlcnR5Lmg6IAotRE9NVGVzdENT
U1Byb3BlcnR5Lmg6IAotV2ViRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAogSlNUZXN0Q2FsbFRyYWNl
ci5oOiAKIERPTVRlc3RDYWxsVHJhY2VyLmg6IAogV2ViRE9NVGVzdENhbGxUcmFjZXIuaDogCkBA
IC03Niw2ICs3Myw5IEBAIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5oOiAKIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaDogCiBET01UZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5oOiAKIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmg6IAorSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oOiAKK0RPTVRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmg6IAorV2ViRE9NVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuaDogCiBKU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIERP
TVRlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIFdlYkRPTVRlc3REZXJpdmVkRGljdGlvbmFyeS5o
OiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJv
cGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnR5LmlkbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi10eXBlZGVmIFVTVlN0cmluZyBDU1NP
TVN0cmluZzsKLQotWwotICAgIEV4cG9zZWQ9VGVzdEdsb2JhbE9iamVjdAotXSBpbnRlcmZhY2Ug
VGVzdENTU1Byb3BlcnR5IHsKLSAgICBbQ0VSZWFjdGlvbnMsIENTU1Byb3BlcnR5PVByb3BlcnR5
TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJv
cGVydHk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK3R5cGVk
ZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOworCitbCisgICAgRXhwb3NlZD1UZXN0R2xvYmFsT2Jq
ZWN0CitdIGludGVyZmFjZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSB7
CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNo
YXJlZEF0dHJpYnV0ZTFdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09N
U3RyaW5nIHByb3BlcnR5MTsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHkyOworICAgIFtDRVJlYWN0aW9ucywgRGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFyZWRBdHRyaWJ1dGUxXSBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBwcm9wZXJ0eTM7CisgICAg
W0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNoYXJlZEF0
dHJpYnV0ZTJdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5n
IHByb3BlcnR5NDsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMl0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk1OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3Bl
cnR5LmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI5
OCArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU1Rlc3RDU1NQcm9wZXJ0eS5oIgotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKLSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KLSNpbmNsdWRl
IDx3dGYvVVJMLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLQotLy8gQXR0cmlidXRlcwotCi1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKLQotY2xhc3MgSlNU
ZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0Owot
ICAgIHN0YXRpYyBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgIHsKLSAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU+
KHZtLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0
dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Ci0gICAgfQotICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19
OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQ
cm90b3R5cGUsIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpCYXNlKTsKLQotdXNpbmcgSlNU
ZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdENTU1Byb3BlcnR5PjsKLQotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENT
U1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBVTlVTRURf
UEFSQU0odm0pOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
LX0KLQotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0Q1NTUHJvcGVydHk6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENTU1By
b3BlcnR5Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLX0KLQotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yKSB9OwotCi0v
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
Ci0gICAgeyAicHJvcGVydHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q1NTUHJv
cGVydHlfcHJvcGVydHkpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9w
ZXJ0eVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0
eVByb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBy
ZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENTU1Byb3BlcnR5OjppbmZvKCksIEpTVGVz
dENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dENTU1Byb3BlcnR5OjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5
KSB9OwotCi1KU1Rlc3RDU1NQcm9wZXJ0eTo6SlNUZXN0Q1NTUHJvcGVydHkoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q1NTUHJv
cGVydHk+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+KHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdENT
U1Byb3BlcnR5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0Q1NTUHJvcGVy
dHk+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3Rd
IGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2Jq
ZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6Y3JlYXRlUHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1
cm4gSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwg
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBK
U1Rlc3RDU1NQcm9wZXJ0eTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdENTU1Byb3Bl
cnR5Pih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RDU1NQcm9wZXJ0eTo6
Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDU1NQcm9wZXJ0eURPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpkZXN0cm95KEpTQzo6SlNDZWxs
KiBjZWxsKQotewotICAgIEpTVGVzdENTU1Byb3BlcnR5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDU1NQ
cm9wZXJ0eTo6fkpTVGVzdENTU1Byb3BlcnR5KCk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdENTU1Byb3BlcnR5KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eSYgdGhpc09i
amVjdCkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UHJvcGVydHlOYW1lKSkpKTsKLX0KLQotSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0Q1NTUHJvcGVydHk+OjpnZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW52b2tlRnVuY3RvclByb3BhZ2F0
aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eVByb3BlcnR5TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENT
U1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQ
cm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RDU1NQcm9wZXJ0eT46OnNldDxzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1
dGVOYW1lKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q1NTUHJvcGVydHk6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNl
OwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHk+IHx8ICFKU1Rlc3RDU1NQcm9wZXJ0eTo6bmVlZHNE
ZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eT4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENTU1Byb3BlcnR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7Ci0gICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENT
U1Byb3BlcnR5KTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENT
U1Byb3BlcnR5LmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIHZv
aWQgKCpteVZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNp
dG9yJikgPSBKU1Rlc3RDU1NQcm9wZXJ0eTo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKLSAgICB2
b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xv
dFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzOwotICAgIGlm
IChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQp
Ci0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5ECi0gICAgcmV0dXJu
IHNwYWNlOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBw
ZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNl
dExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBh
bmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0Q1NTUHJvcGVydHlPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBB
YnN0cmFjdFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQotewotICAg
IFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBV
TlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0
Q1NTUHJvcGVydHlPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0Q1NTUHJvcGVydHkgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdENTU1Byb3BlcnR5LT53cmFwcGVkKCks
IGpzVGVzdENTU1Byb3BlcnR5KTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
LSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RDU1NQcm9w
ZXJ0eUBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlMTVUZXN0Q1NTUHJvcGVydHlFW107IH0KLSNlbmRpZgotI2VuZGlm
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmIGlt
cGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYg
UExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3RDU1NQcm9wZXJ0eUBXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9p
ZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxNVRlc3RDU1NQcm9wZXJ0
eUVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdENTU1Byb3BlcnR5IGRv
ZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRp
b24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdENTU1Byb3BlcnR5
Pjo6dmFsdWUsICJUZXN0Q1NTUHJvcGVydHkgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAv
LyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBm
cmVlIGJ1Zywgb3IKLSAgICAvLyBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1YmNsYXNzZXMuIElmIFRl
c3RDU1NQcm9wZXJ0eSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0
b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdENTU1Byb3BlcnR5IHlvdSB0byBvcHQgb3V0
IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFs
aWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJF
TEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVy
KTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdENTU1Byb3BlcnR5JiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3RDU1NQcm9w
ZXJ0eSogSlNUZXN0Q1NTUHJvcGVydHk6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RDU1NQcm9wZXJ0eSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJv
cGVydHkuaAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MyAr
MCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdENTU1Byb3BlcnR5LmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SlNUZXN0Q1NTUHJvcGVydHkgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4g
ewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdENTU1Byb3BlcnR5
PjsKLSAgICBzdGF0aWMgSlNUZXN0Q1NTUHJvcGVydHkqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENTU1By
b3BlcnR5PiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3RDU1NQcm9wZXJ0eSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9wZXJ0eT4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0Q1NTUHJvcGVydHkqIHRvV3JhcHBlZChK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9u
QXJyYXkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0K
LSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdENTU1Byb3BlcnR5KEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmKTsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0Q1NTUHJvcGVydHlP
d25lciBmaW5hbCA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiop
IGZpbmFsOwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCkgZmluYWw7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0Q1NTUHJvcGVydHkqKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyPiBvd25lcjsKLSAgICBy
ZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0Q1NT
UHJvcGVydHkqIHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0
OwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0Q1NTUHJvcGVydHkmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0Q1NTUHJvcGVydHkqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051
bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJik7Ci1pbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRl
c3RDU1NQcm9wZXJ0eT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkg
OiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZl
cnRlclRyYWl0czxUZXN0Q1NTUHJvcGVydHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBK
U1Rlc3RDU1NQcm9wZXJ0eTsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdENT
U1Byb3BlcnR5KjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzM1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFj
cm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVj
dG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1
dGUyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMik7CisKK2NsYXNzIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZVByb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OworCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZt
KTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3Rl
bXBsYXRlPD4gdm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3RlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01Db25z
dHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKKyAgICB7ICJwcm9wZXJ0eTEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVfc2hhcmVkQXR0cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSkgfSB9LAorICAgIHsgInByb3BlcnR5MiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSB9IH0s
CisgICAgeyAicHJvcGVydHkzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
X3NoYXJlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlX3NoYXJlZEF0dHJpYnV0ZTEpIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMikgfSB9LAorICAg
IHsgInByb3BlcnR5NSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9z
aGFyZWRBdHRyaWJ1dGUyKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmluZm8oKSwgSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZVRhYmxlVmFsdWVz
LCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9
CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlOjpzX2luZm8gPSB7ICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSkgfTsKKworSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYm
IGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQor
Cit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf
YmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2Jq
ZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURP
TU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwor
fQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp+SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
Cit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTFHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnNoYXJlZEF0dHJpYnV0ZTEocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpKSkpOworfQorCitKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUxLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZT46OmdldFBhc3NpbmdQcm9wZXJ0eU5hbWU8anNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVO
YW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFNoYXJlZEF0dHJpYnV0ZTEocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0
cmlidXRlMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1l
IGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnNldFBhc3NpbmdQcm9wZXJ0eU5hbWU8c2V0
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUx
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorewor
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zaGFyZWRBdHRyaWJ1dGUyKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKSkpKTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVf
c2hhcmVkQXR0cmlidXRlMiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+OjpnZXRQYXNzaW5nUHJvcGVydHlOYW1lPGpzVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMkdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmli
dXRlTmFtZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTJTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbnZva2VGdW5j
dG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRTaGFyZWRBdHRyaWJ1dGUy
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJl
ZEF0dHJpYnV0ZTIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpzZXRQYXNzaW5nUHJvcGVydHlOYW1l
PHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMlNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCBhdHRyaWJ1dGVOYW1lKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsK
KyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCisgICAgdm9pZCAoKm15VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpT
Qzo6U2xvdFZpc2l0b3ImKSA9IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0
Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFp
bnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRhLm91
dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VO
RAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4oY2VsbCk7
CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3Qt
PndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNP
YmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJh
c2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90
VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFS
QU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFN
KHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Cisg
ICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLT53cmFwcGVkKCksIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAi
QyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTM4VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+JiYg
aW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVu
dGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29y
ZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRW
TjdXZWJDb3JlMzhUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUVbMl07Cisj
ZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRo
ZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnZhbHVlLCAiVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAg
ICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRl
ciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdl
IGN1cnJlbnRseSByZXF1aXJlIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3Jh
cChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFs
dWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlPjsKKyAgICBzdGF0aWMgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4m
JiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29u
Y3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
dWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVh
cChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAgIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4m
Jik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lciBmaW5hbCA6IHB1Ymxp
YyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopIGZpbmFsOworICAgIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7
Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQmLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSopCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5s
aW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQor
CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJik7Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
UHRyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTsKKyAgICB1c2luZyBUb1dyYXBwZWRS
ZXR1cm5UeXBlID0gVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyAr
NDEsMTMgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVz
dENFUmVhY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5o
IgotI2luY2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2FsbFRy
YWNlci5oIgogI2luY2x1ZGUgIkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5oIgogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaCIKKyNp
bmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNUZXN0RG9tYWluU2VjdXJpdHkuaCIKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRUYXJnZXQuaCIKQEAgLTE2Nyw3ICsxNjcs
NiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1RlCiAjZW5kaWYKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VS
ZWFjdGlvbnNDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpOwogI2lmIEVO
QUJMRShURVNUX0NPTkRJVElPTkFMKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yKTsKQEAg
LTE3Nyw2ICsxNzYsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RH
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVj
dG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9t
YWluU2VjdXJpdHlDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2
ZW50VGFyZ2V0Q29uc3RydWN0b3IpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHVzaW5nIEpTVGVzdEds
b2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0KIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRl
eFsyNjhdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEds
b2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDAs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAyNjcgfSwKKyAgICB7IDY1LCAtMSB9LAog
ICAgIHsgMTMsIDI2MCB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI5
MSw3ICsyOTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDM4LCAtMSB9LAogICAgIHsgMTksIDI1NyB9LAotICAgIHsg
NywgLTEgfSwKKyAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQ1LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgNiwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMzEsNyArMzMx
LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTAsIDI1NiB9
LAorICAgIHsgOSwgMjU2IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDU3LCAtMSB9LAogICAg
IHsgMTgsIC0xIH0sCkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVAogICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMTEsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQzOCw3ICs0MzgsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDEyLCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjMsMTMgKzQ2MywxMyBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDksIC0xIH0sCisgICAgeyA4
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0OCwgMjYzIH0sCi0gICAgeyA4LCAyNjIgfSwKKyAg
ICB7IDcsIDI2MiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNTA2LDcgKzUwNiw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IDU0LCAtMSB9LAogICAgIHsgNjAsIC0xIH0sCiAgICAgeyA2NCwg
LTEgfSwKLSAgICB7IDY1LCAtMSB9LAogfTsKIAogCkBAIC01MjEsNyArNTIwLDYgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogI2VuZGlmCiAgICAgeyAiVGVzdENF
UmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgIlRlc3RDU1NQcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RDYWxs
VHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAgICB7ICJUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJ
bnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTUzMyw2ICs1MzEsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICAgICB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9U
ZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RXZlbnRDb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEV2ZW50VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCkBAIC04ODks
MTcgKzg4OCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmoKICAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOwotfQotCi1KU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9i
amVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTk4
MCw2ICs5NjgsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iagog
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+Ojpn
ZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0yNzEsNiArMjcyLDEyMCBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQorCisjZWxzZQorCitlbnVtIGNsYXNzIENT
U1Byb3BlcnR5TG9va3VwTW9kZSB7IENvbnZlcnRVc2luZ0Rhc2hQcmVmaXgsIENvbnZlcnRVc2lu
Z05vRGFzaFByZWZpeCwgTm9Db252ZXJzaW9uIH07CisKK3RlbXBsYXRlPENTU1Byb3BlcnR5TG9v
a3VwTW9kZSBtb2RlPiBzdGF0aWMgQ1NTUHJvcGVydHlJRCBsb29rdXBDU1NQcm9wZXJ0eUZyb21J
RExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21TdHJpbmcsIENTU1Byb3BlcnR5SUQ+PiBjYWNoZTsK
KworICAgIGlmIChhdXRvIGlkID0gY2FjaGUuZ2V0KCkuZ2V0KGF0dHJpYnV0ZSkpCisgICAgICAg
IHJldHVybiBpZDsKKworICAgIGNoYXIgb3V0cHV0QnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxl
bmd0aCArIDFdOworICAgIGNoYXIqIG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRCdWZmZXI7
CisgICAgY29uc3QgY2hhciogb3V0cHV0QnVmZmVyU3RhcnQgPSBvdXRwdXRCdWZmZXJDdXJyZW50
OworCisgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29u
dmVydFVzaW5nRGFzaFByZWZpeCB8fCBtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29u
dmVydFVzaW5nTm9EYXNoUHJlZml4KSB7CisgICAgICAgIC8vIENvbnZlcnNpb24gaXMgaW1wbGVt
ZW50aW5nIHRoZSAiSURMIGF0dHJpYnV0ZSB0byBDU1MgcHJvcGVydHkgYWxnb3JpdGhtIgorICAg
ICAgICAvLyBmcm9tIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jaWRsLWF0dHJpYnV0
ZS10by1jc3MtcHJvcGVydHkuCisKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1By
b3BlcnR5TG9va3VwTW9kZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeCkKKyAgICAgICAgICAgICpv
dXRwdXRCdWZmZXJDdXJyZW50KysgPSAnLSc7CisKKyAgICAgICAgcmVhZENoYXJhY3RlcnNGb3JQ
YXJzaW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8gYnVmZmVyKSB7CisgICAgICAgICAgICB3aGlsZSAo
YnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgeworICAgICAgICAgICAgICAgIGF1dG8g
YyA9ICpidWZmZXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzQVND
SUkoYyksICJJbnZhbGlkIHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9ICctJzsKKyAgICAgICAg
ICAgICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9IHRvQVNDSUlMb3dlclVuY2hlY2tl
ZChjKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKm91dHB1
dEJ1ZmZlckN1cnJlbnQrKyA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAg
ICAqb3V0cHV0QnVmZmVyQ3VycmVudCA9ICdcMCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hh
ciBvdXRwdXRCdWZmZXJbbWF4Q1NTUHJvcGVydHlOYW1lTGVuZ3RoICsgMV07CisgICAgICAgIGNo
YXIqIG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRCdWZmZXI7CisgICAgICAgIGNvbnN0IGNo
YXIqIG91dHB1dEJ1ZmZlclN0YXJ0ID0gb3V0cHV0QnVmZmVyQ3VycmVudDsKKworICAgICAgICBy
ZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoYXR0cmlidXRlLCBbJl0oYXV0byBidWZmZXIpIHsKKyAg
ICAgICAgICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byBjID0gKmJ1ZmZlcisrOworICAgICAgICAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoYyA9PSAnLScgfHwgaXNBU0NJSUxvd2VyKGMpLCAiSW52YWxpZCBwcm9wZXJ0
eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgICAgICpvdXRwdXRCdWZmZXJDdXJyZW50ID0gJ1wwJzsKKyAgICB9CisKKyAg
ICBhdXRvIGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3BlcnR5KG91dHB1dEJ1ZmZlclN0YXJ0LCBv
dXRwdXRCdWZmZXJDdXJyZW50IC0gb3V0cHV0QnVmZmVyKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGhhc2hUYWJsZUVudHJ5LCAiSW52YWxpZCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gaWQgPSBzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihoYXNoVGFibGVFbnRyeS0+aWQpOworICAgIGNhY2hlLmdldCgpLmFkZChh
dHRyaWJ1dGUsIGlkKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xh
cmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9t
U3RyaW5nJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9va3VwQ1NTUHJv
cGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29udmVydFVzaW5n
Tm9EYXNoUHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVy
dHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRy
aWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUoY29u
c3QgQXRvbVN0cmluZyYgYXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGF1
dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9w
ZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ05vRGFzaFByZWZpeD4oYXR0cmlidXRlKTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAi
SW52YWxpZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxz
ZSk7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yV2Vi
S2l0Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlKQoreworICAg
IGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQ
cm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ0Rhc2hQcmVmaXg+KGF0dHJpYnV0ZSk7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwg
IkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpOworfQor
CitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVl
Rm9yV2ViS2l0Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1By
b3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2lu
Z0Rhc2hQcmVmaXg+KGF0dHJpYnV0ZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0
eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJp
YnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eUlELCB2YWx1ZSwgZmFsc2UpOworfQorCitTdHJpbmcgQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3Ry
aW5nJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9va3VwQ1NTUHJvcGVy
dHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Tm9Db252ZXJzaW9uPihh
dHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9w
ZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9w
ZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRy
aWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9v
a3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Tm9D
b252ZXJzaW9uPihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJ
RCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1
dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJu
YWwocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30KKworU3RyaW5nIENTU1N0eWxlRGVjbGFy
YXRpb246OnByb3BlcnR5VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0
cmluZyYgYXR0cmlidXRlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3Bl
cnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ0Rh
c2hQcmVmaXg+KGF0dHJpYnV0ZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlE
ICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKHByb3BlcnR5SUQpOworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0
b21TdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBhdXRvIHBy
b3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGU8Q1NTUHJvcGVydHlM
b29rdXBNb2RlOjpDb252ZXJ0VXNpbmdEYXNoUHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlk
IGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
cmV0dXJuIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30K
KwogI2VuZGlmCiAKIFN0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpjc3NGbG9hdCgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDI3NTQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDYgKzc5LDI2IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxWYXJpYW50PFN0
cmluZywgZG91YmxlPj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgU3RyaW5nIHZh
bHVlLCBib29sJiBwcm9wZXJ0eVN1cHBvcnRlZCk7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1
cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKKyNlbHNlCisgICAgLy8gRklYTUU6IEl0IHdv
dWxkIGJlIG1vcmUgZWZmaWNpZW50LCBieSB2aXJ0dWUgb2YgYXZvaWRpbmcgdGhlIHRleHQgdHJh
bnNmb3JtYXRpb24gYW5kIGhhc2ggbG9va3VwIGN1cnJlbnRseQorICAgIC8vIHJlcXVpcmVkIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbiwgaWYgd2UgY291bGQgY291bGQgc211Z2dsZSB0aGUgQ1NTUHJv
cGVydHlJRCB0aHJvdWdoIHRoZSBiaW5kaW5ncywgcGVyaGFwcworICAgIC8vIGJ5IGVuY29kaW5n
IGl0IGludG8gdGhlIEhhc2hUYWJsZVZhbHVlIGFuZCB0aGVuIHBhc3NpbmcgaXQgdG9nZXRoZXIg
d2l0aCB0aGUgUHJvcGVydHlOYW1lLgorCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZv
ciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Nv
bS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24tY2FtZWxfY2FzZWRfYXR0cmlidXRlLgorICAgIFN0
cmluZyBwcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3Ry
aW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvckNhbWVsQ2Fz
ZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisgICAg
Ly8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIGh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24td2Vi
a2l0X2Nhc2VkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcgcHJvcGVydHlWYWx1ZUZvcldlYktpdENh
c2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRQcm9wZXJ0eVZhbHVlRm9yV2ViS2l0Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZv
ciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Nv
bS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24tZGFzaGVkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcg
cHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0
ZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBTaGFyZWQgaW1w
bGVtZW50YXRpb24gZm9yIGFsbCBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggbm9uLXN0YW5kYXJkIEVw
dWItY2FzZWQuCisgICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1
dGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5
VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBwYXNzIGluIGEg
U2V0dGluZ3MmIHRvIHdvcmsgY29ycmVjdGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmlkbAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw2IEBACiAjZW5kaWYKIF0gaW50ZXJmYWNlIENTU1N0eWxlRGVjbGFyYXRpb24gewogICAgIC8v
IEZJWE1FOiBUaGVzZSBhdHRyaWJ1dGVzIGFuZCBmdW5jdGlvbnMgc2hvdWxkIHVzZSBDU1NPTVN0
cmluZyBub3QgRE9NU3RyaW5nLgotCiAgICAgW0NFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGNzc1RleHQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OwogICAgIGdldHRlciBET01TdHJpbmcgaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9tYWtlcHJvcC5wbAkod29ya2luZyBjb3B5KQpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgZm9y
ZWFjaCBteSAkbmFtZU9yQWxpYXMgKEBuYW1lc0FuZEFsaWFzZQogICAgIG15ICRuYW1lID0gJG5h
bWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0g
JG5hbWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRl
bmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAg
IG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZT1wcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZSIpOwogICAg
IHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRp
bmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKICAgICBwdXNoKEBl
eHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7
JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5hbWV9OwogICAgIG15ICRleHRlbmRlZEF0dHJp
YnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CkBAIC0xNDUwLDcg
KzE0NTAsNyBAQCBmb3JlYWNoIG15ICRuYW1lT3JBbGlhcyAoZ3JlcCB7ICRfID1+IC9eCiAgICAg
bXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkg
JHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19Owog
Ci0gICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3Bl
cnR5SWR9Iik7CisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0
dHJpYnV0ZSIpOwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5
U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1l
fTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9
JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5hbWV9OwogICAgIG15
ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVl
cyk7CkBAIC0xNDcyLDcgKzE0NzIsNyBAQCBmb3JlYWNoIG15ICRuYW1lT3JBbGlhcyAoZ3JlcCB7
ICRfID1+IC9cCiAgICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JB
bGlhc307CiAgICAgbXkgJHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1Rv
TmFtZXskbmFtZX19OwogCi0gICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQ
cm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVz
ID0gKCJEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JE
YXNoZWRJRExBdHRyaWJ1dGUiKTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywg
IkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0dGluZ3NG
bGFnc3skbmFtZX07CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVk
QXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdzeyRuYW1l
fTsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5kZWRBdHRy
aWJ1dGVWYWx1ZXMpOwpAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgZm9yZWFjaCBteSAkbmFtZU9yQWxp
YXMgKGdyZXAgeyAkXyA9fiAvXgogICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFt
ZXskbmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0Fu
ZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVl
cyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15IEBleHRlbmRlZEF0dHJp
YnV0ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1wcm9wZXJ0
eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlIik7CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRy
aWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19Iikg
aWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFs
dWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRp
bWVGbGFnc3skbmFtZX07CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwg
QGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTQ1MCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisy
MDIxLTA0LTAyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1
Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBD
U1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFjY2VzcyBiZWhhdmlvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy5o
dG1sOgorICAgICAgICAqIGZhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLmh0bWw6CisgICAgICAgIFJl
bW92ZSB0ZXN0cyBmb3IgaXRlcmF0aW9uIG9yZGVyLCB3aGljaCBpcyBub3Qgc3RhbmRhcmRpemVk
LCBhbmQgbm90IGNvbnNpc3RlbnQgYW1vbmcKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVy
dGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9DU1NTdHls
ZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9yLmh0
bWw6CisgICAgICAgIFVwZGF0ZSBub3cgdGhhdCB0aGUgcHJvcGVydGllcyBhcmUgcHJvcGVyIGF0
dHJpYnV0ZXMgb24gdGhlIHByb3RvdHlwZS4KKworICAgICAgICAqIGpzL2RvbS9wdXQtb3ZlcnJp
ZGUtc2hvdWxkLW5vdC11c2UtaWMuaHRtbDoKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGEgRE9N
U3RyaW5nTGlzdCBhcyB0aGUgb2JqZWN0IHRoYXQgb3ZlcnJpZGVzIHB1dCwgc2luY2UgQ1NTU3R5
bGVEZWNsYXJhdGlvbiBubyBsb25nZXIgZG9lcy4KKworICAgICAgICAqIHRyYW5zaXRpb25zL3Ry
YW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRyYW5zaXRpb25zL3Ry
YW5zaXRpb25zLXBhcnNpbmcuaHRtbDoKKyAgICAgICAgUmVtb3ZlIE9iamVjdC5rZXlzKCkgYXNw
ZWN0IG9mIHRoZSB0ZXN0LCB3aGljaCBpcyBubyBsb25nZXIgbWVhbmluZ2Z1bCBzaW5jZSB0aGUK
KyAgICAgICAgcHJvcGVydGllcyBzaG91bGQgbm8gbG9uZ2VyIGV4aXN0IGluIHRoZSByZXN1bHQg
c2V0LgorCiAyMDIxLTA0LTAyICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtAYXBwbGUuY29tPgog
CiAgICAgICAgIFsgTWFjT1MgXSBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvbWFjb3MtaW5s
aW5lLW1lZGlhLWNvbnRyb2xzL21hY29zLWlubGluZS1tZWRpYS1kcm9wcGluZy1jb250cm9scy5o
dG1sIGlzIGEgZmxha3kgZmFpbHVyZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUt
ZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjc1NDUwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw2IEBAIFBB
U1MgJ1dlYmtpdFRyYW5zZm9ybScgaW4gZG9jdW1lbnQuYm9keS4KIFBBU1MgJ2JvZ3VzLXJhbmRv
bS1TdHJpbmcnIGluIGRvY3VtZW50LmJvZHkuc3R5bGUgaXMgZmFsc2UKIFBBU1MgJ2Nzc1RleHQn
IGluIGRvY3VtZW50LmJvZHkuc3R5bGUgaXMgdHJ1ZQogUEFTUyAnZ2V0UHJvcGVydHlDU1NWYWx1
ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSBpcyB0cnVlCi1QQVNTIFRoZSBDU1MgcHJvcGVydHkg
b3JkZXIgaXMgY29ycmVjdAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJv
cGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVu
dW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDMzICsyMyw2IEBACiAgICAgICAgIHNob3VsZEJlRmFsc2UoIidib2d1cy1yYW5kb20t
U3RyaW5nJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
J2Nzc1RleHQnIGluIGRvY3VtZW50LmJvZHkuc3R5bGUiKTsKICAgICAgICAgc2hvdWxkQmVUcnVl
KCInZ2V0UHJvcGVydHlDU1NWYWx1ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSIpOwotCi0gICAg
ICAgIC8vIFRlc3QgQ1NTIHByb3BlcnR5IG9yZGVyLgotICAgICAgICB2YXIgc3RhcnRlZDsKLSAg
ICAgICAgdmFyIGNzc1Byb3BlcnR5Q291bnQgPSAwOwotICAgICAgICB2YXIgcHJldmlvdXM7Ci0g
ICAgICAgIHZhciBzZWVuRmlsdGVyOwotICAgICAgICBmb3IgKHZhciBwIGluIGRvY3VtZW50LmJv
ZHkuc3R5bGUpIHsKLSAgICAgICAgICAgIGlmIChwID09PSAiYWxpZ25tZW50QmFzZWxpbmUiKQot
ICAgICAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFzdGFydGVk
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHAgPT09ICJmaWx0
ZXIiKQotICAgICAgICAgICAgICAgIHNlZW5GaWx0ZXIgPSB0cnVlOwotICAgICAgICAgICAgaWYg
KHByZXZpb3VzICYmIHByZXZpb3VzID49IHApIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJJbnZhbGlkIENTUy1tYXBwZWQgcHJvcGVydHkgb3JkZXI6ICciICsgcCArICInIGFmdGVyICci
ICsgcHJldmlvdXMgKyAiJyIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKCsrY3NzUHJvcGVydHlDb3VudCA8PSA0MDApCi0gICAgICAgICAg
ICAgICAgcHJldmlvdXMgPSBwOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHNlZW5GaWx0ZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlRoZSBDU1Mg
cHJvcGVydHkgb3JkZXIgaXMgY29ycmVjdCIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGhlICdmaWx0ZXInIHByb3BlcnR5IHdhcyBub3Qg
ZW51bWVyYXRlZCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9CiAgICAgPC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsNiBAQCBQQVNTIHJlc3VsdEFy
cmF5WzFdLml0ZW0gaXMgY3NzUnVsZUxpc3QuCiBQQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzIn
CiBQQVNTIHJlc3VsdEFycmF5WzJdLml0ZW0gaXMgY3NzUnVsZUxpc3QuaXRlbSgyKQogCi1bb2Jq
ZWN0IENTU1N0eWxlRGVjbGFyYXRpb25dCi1QQVNTIHJlc3VsdEFycmF5WzBdLmkgaXMgJzAnCi1Q
QVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDApCi1Q
QVNTIHJlc3VsdEFycmF5WzFdLmkgaXMgJzEnCi1QQVNTIHJlc3VsdEFycmF5WzFdLml0ZW0gaXMg
Y3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDEpCi1QQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzIn
Ci1QQVNTIHJlc3VsdEFycmF5WzJdLml0ZW0gaXMgY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDIp
Ci0KIFtvYmplY3QgQ1NTVmFsdWVMaXN0XQogUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTAK
IFBBU1MgcmVzdWx0QXJyYXlbMF0uaSBpcyAnMCcKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2RvbUxpc3RFbnVtZXJhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi5odG1sCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTc3LDE3ICsxNzcsNiBAQCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaXRlbSIsICJjc3NSdWxl
CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaSIsICInMiciKTsKIHNob3VsZEJlKCJyZXN1bHRB
cnJheVsyXS5pdGVtIiwgImNzc1J1bGVMaXN0Lml0ZW0oMikiKTsKIAotLy8gQ1NTU3R5bGVEZWNs
YXJhdGlvbgotLy9kZWJ1Zyhlc2NhcGVIVE1MKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdzdHlsZScpKSk7Ci12YXIgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzJdLmNzc1J1bGVzWzBdLnN0eWxlOwotcmVzdWx0QXJyYXkgPSBpdGVyYXRlTGlzdChjc3NT
dHlsZURlY2xhcmF0aW9uKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVswXS5pIiwgIicwJyIpOwot
c2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLml0ZW0iLCAiY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVt
KDApIik7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKLXNob3VsZEJlKCJy
ZXN1bHRBcnJheVsxXS5pdGVtIiwgImNzc1N0eWxlRGVjbGFyYXRpb24uaXRlbSgxKSIpOwotc2hv
dWxkQmUoInJlc3VsdEFycmF5WzJdLmkiLCAiJzInIik7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXlb
Ml0uaXRlbSIsICJjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMikiKTsKLQogLy8gQ1NTVmFsdWVM
aXN0CiB2YXIgY3NzVmFsdWVMaXN0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ29sJylbMF0pLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRl
ci1zcGFjaW5nJyk7CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGNzc1ZhbHVlTGlzdCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVj
bGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFy
YXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NDUw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRl
Y2xhcmF0aW9uLXByb3BlcnRpZXMtZGVzY3JpcHRvci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMsNyArMyw4IEBAIFRoaXMgdGVzdHMgdGhlIGRlc2NyaXB0b3Igb2YgQ1NTU3R5bGVE
ZWMKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGRlc2NyaXB0b3JbJ3dyaXRh
YmxlJ10gaXMgdHJ1ZQorUEFTUyBkZXNjcmlwdG9yWydnZXQnXSBpcyBhbiBpbnN0YW5jZSBvZiBG
dW5jdGlvbgorUEFTUyBkZXNjcmlwdG9yWydzZXQnXSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlv
bgogUEFTUyBkZXNjcmlwdG9yWydlbnVtZXJhYmxlJ10gaXMgdHJ1ZQogUEFTUyBkZXNjcmlwdG9y
Wydjb25maWd1cmFibGUnXSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxl
ZGVjbGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9u
LXByb3BlcnRpZXMtZGVzY3JpcHRvci5odG1sCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJv
cGVydGllcy1kZXNjcmlwdG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw5IEBACiAg
ICAgPHNjcmlwdD4KICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGRlc2NyaXB0
b3Igb2YgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0aWVzLiIpOwogCi0gICAgICAgIHZhciBk
ZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkb2N1bWVudC5ib2R5
LnN0eWxlLCAnY29sb3InKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJkZXNjcmlwdG9yWyd3cml0
YWJsZSddIik7CisgICAgICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihkb2N1bWVudC5ib2R5LnN0eWxlLl9fcHJvdG9fXywgJ2NvbG9yJyk7CisgICAg
ICAgIHNob3VsZEJlVHlwZSgiZGVzY3JpcHRvclsnZ2V0J10iLCAiRnVuY3Rpb24iKTsKKyAgICAg
ICAgc2hvdWxkQmVUeXBlKCJkZXNjcmlwdG9yWydzZXQnXSIsICJGdW5jdGlvbiIpOwogICAgICAg
ICBzaG91bGRCZVRydWUoImRlc2NyaXB0b3JbJ2VudW1lcmFibGUnXSIpOwogICAgICAgICBzaG91
bGRCZVRydWUoImRlc2NyaXB0b3JbJ2NvbmZpZ3VyYWJsZSddIik7CiAgICAgPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMS0wNC0wMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5IHNpemUgY29zdCBvZiBlbmFibGlu
ZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBhY2Nlc3MgYmVoYXZpb3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjUxOAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nz
c3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0
ZSB0ZXN0IHJlc3VsdCBub3cgdGhhdCBpdCBpcyBwYXNzaW5nLgorCiAyMDIxLTA0LTAyICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgW1Jl
cGxhY2VhYmxlXSBleHRlbmRlZCBhdHRyaWJ1dGUgZnJvbSBgZG9jdW1lbnQuYWxsYApJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21wYXQvY3NzLXN0
eWxlLWRlY2xhcmF0aW9uLWFsaWFzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9j
c3Mtc3R5bGUtZGVjbGFyYXRpb24tYWxpYXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2NvbXBhdC9jc3Mtc3R5bGUtZGVjbGFyYXRpb24tYWxpYXMtZW51bWVyYXRpb24tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFsaWFzZXMgZW51
bWVyYXRlZCBvbiBDU1NTdHlsZURlY2xhcmF0aW9uIGFzc2VydF90cnVlOiBBbGlhcyB3ZWJraXRU
cmFuc2Zvcm0gc2VlbiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBBbGlhc2VzIGVudW1l
cmF0ZWQgb24gQ1NTU3R5bGVEZWNsYXJhdGlvbgogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9uLXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJv
cGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRp
b24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBA
CiAKLUZBSUwgQ1NTIFRlc3Q6IENTU1N0eWxlRGVjbGFyYXRpb24gcHJvcGVydGllcyBhcmUgZGVm
aW5lZCBhcyBXZWJJREwgYXR0cmlidXRlcywgbm90IHVzaW5nIGdldE93blByb3BlcnR5TmFtZXMo
KSBhc3NlcnRfZmFsc2U6IHNob3VsZG4ndCBoYXZlIGFuIG93biBwcm9wZXJ0eSBmb3IgV2ViSURM
IGF0dHJpYnV0ZXMgZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgQ1NTIFRlc3Q6IENTU1N0
eWxlRGVjbGFyYXRpb24gcHJvcGVydGllcyBhcmUgZGVmaW5lZCBhcyBXZWJJREwgYXR0cmlidXRl
cywgbm90IHVzaW5nIGdldE93blByb3BlcnR5TmFtZXMoKQogCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvZG9tL3B1dC1vdmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy5odG1sCShy
ZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3Vs
ZC1ub3QtdXNlLWljLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsMTAgKzgsMTAgQEAKIDxzY3Jp
cHQ+CiAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgZnVuY3Rpb24gdHJhbnNpdGlvbmVk
KCkgewotICAgICAgICAgICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykuc3R5
bGU7CisgICAgICAgICAgICBkYXRhc2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpLmRh
dGFzZXQ7CiAgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMjA7IGkrKykKLSAgICAgICAg
ICAgICAgICBzdHlsZVsncCcraV0gPSBpOwotICAgICAgICAgICAgcmV0dXJuIHN0eWxlOworICAg
ICAgICAgICAgICAgIGRhdGFzZXRbJ3AnK2ldID0gaTsKKyAgICAgICAgICAgIHJldHVybiBkYXRh
c2V0OwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcHV0dGVyKG8pIHsKSW5kZXg6IExh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmct
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy90cmFuc2l0aW9ucy1wYXJzaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw4
ICs2LDYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogVmFsaWQg
dHJhbnNpdGlvbi1wcm9wZXJ0eSB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlv
blByb3BlcnR5IGlzICdhbGwnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvblBy
b3BlcnR5IGlzICdhbGwnCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0
aW9uUHJvcGVydHknKSBpcyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2Yo
J3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eScpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb25Q
cm9wZXJ0eSBpcyAnbm9uZScKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uUHJvcGVydHkg
aXMgJ25vbmUnCiBQQVNTIHN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAnbm9uZScK
QEAgLTEwMCw4ICs5OCw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uUHJv
cGUKIFZhbGlkIHRyYW5zaXRpb24tZHVyYXRpb24gdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxl
LnRyYW5zaXRpb25EdXJhdGlvbiBpcyAnMHMnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJh
bnNpdGlvbkR1cmF0aW9uIGlzICcwcycKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2Yo
J3RyYW5zaXRpb25EdXJhdGlvbicpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSku
aW5kZXhPZignd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uJykgaXMgLTEKIFBBU1Mgc3R5bGUudHJh
bnNpdGlvbkR1cmF0aW9uIGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVy
YXRpb24gaXMgJzBzJwogUEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24gaXMgJzBz
JwpAQCAtMTUwLDggKzE0Niw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9u
RHVyYXQKIFZhbGlkIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIHZhbHVlcy4KIFBBU1MgY29t
cHV0ZWRTdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2Vhc2UnCiBQQVNTIGNvbXB1
dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdlYXNlJwotUEFTUyBP
YmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykgaXMg
bm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24nKSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rp
b24gaXMgJ2xpbmVhcicKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rp
b24gaXMgJ2xpbmVhcicKIFBBU1Mgc3R5bGUud2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
IGlzICdsaW5lYXInCkBAIC0zMDAsOCArMjk0LDYgQEAgUEFTUyBjb21wdXRlZFN0eWxlLndlYmtp
dFRyYW5zaXRpb25UaW1pbgogVmFsaWQgdHJhbnNpdGlvbi1kZWxheSB2YWx1ZXMuCiBQQVNTIGNv
bXB1dGVkU3R5bGUudHJhbnNpdGlvbkRlbGF5IGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS53
ZWJraXRUcmFuc2l0aW9uRGVsYXkgaXMgJzBzJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5k
ZXhPZigndHJhbnNpdGlvbkRlbGF5JykgaXMgbm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxl
KS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uRGVsYXknKSBpcyAtMQogUEFTUyBzdHlsZS50cmFu
c2l0aW9uRGVsYXkgaXMgJzBzJwogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSBp
cyAnMHMnCiBQQVNTIHN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheSBpcyAnMHMnCkBAIC0zNTAs
OCArMzQyLDYgQEAgUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheQogVmFs
aWQgdHJhbnNpdGlvbiBzaG9ydGhhbmQgdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5z
aXRpb24gaXMgJ2FsbCAwcyBlYXNlIDBzJwogUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5z
aXRpb24gaXMgJ2FsbCAwcyBlYXNlIDBzJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhP
ZigndHJhbnNpdGlvbicpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhP
Zignd2Via2l0VHJhbnNpdGlvbicpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb24gaXMgJ25v
bmUnCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbiBpcyAnbm9uZSAwcyBlYXNlIDBzJwog
UEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uIGlzICdub25lJwpJbmRleDogTGF5b3V0VGVzdHMv
dHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMjc1
NDUwKQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw2IEBAIHNob3VsZEJlKCJjb21wdXRlZFN0eWxl
LnRyYW5zaXRpb25Qcm9wZXIKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRp
b25Qcm9wZXJ0eSIsICInYWxsJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgPSAibm9u
ZSI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25Q
cm9wZXJ0eScpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2Yo
J3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eScpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJh
bnNpdGlvblByb3BlcnR5IiwgIidub25lJyIpOwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJh
bnNpdGlvblByb3BlcnR5IiwgIidub25lJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5z
aXRpb25Qcm9wZXJ0eSIsICInbm9uZSciKTsKQEAgLTE3Niw4ICsxNzQsNiBAQCBzaG91bGRCZSgi
Y29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVyYXRpCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53
ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24iLCAiJzBzJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uRHVy
YXRpb24gPSAiMHMiOwotc2hvdWxkTm90QmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0
cmFuc2l0aW9uRHVyYXRpb24nKSIsICItMSIpOwotc2hvdWxkQmUoIk9iamVjdC5rZXlzKHN0eWxl
KS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24nKSIsICItMSIpOwogc2hvdWxkQmUo
InN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiIsICInMHMnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRT
dHlsZS50cmFuc2l0aW9uRHVyYXRpb24iLCAiJzBzJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbiIsICInMHMnIik7CkBAIC0yNTYsOCArMjUyLDYgQEAgc2hvdWxk
QmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblRpbWluZwogc2hvdWxkQmUoImNvbXB1dGVkU3R5
bGUud2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidlYXNlJyIpOwogCiBzdHlsZS50
cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gPSAibGluZWFyIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qu
a2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykiLCAiLTEiKTsK
LXNob3VsZEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvblRp
bWluZ0Z1bmN0aW9uJykiLCAiLTEiKTsKIHNob3VsZEJlKCJzdHlsZS50cmFuc2l0aW9uVGltaW5n
RnVuY3Rpb24iLCAiJ2xpbmVhciciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbiIsICInbGluZWFyJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRy
YW5zaXRpb25UaW1pbmdGdW5jdGlvbiIsICInbGluZWFyJyIpOwpAQCAtNDg1LDggKzQ3OSw2IEBA
IHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSIKIHNob3VsZEJlKCJjb21w
dXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheSIsICInMHMnIik7CiAKIHN0eWxlLnRyYW5z
aXRpb25EZWxheSA9ICIwcyI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4
T2YoJ3RyYW5zaXRpb25EZWxheScpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5
bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25EZWxheScpIiwgIi0xIik7CiBzaG91bGRCZSgi
c3R5bGUudHJhbnNpdGlvbkRlbGF5IiwgIicwcyciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxl
LnRyYW5zaXRpb25EZWxheSIsICInMHMnIik7CiBzaG91bGRCZSgic3R5bGUud2Via2l0VHJhbnNp
dGlvbkRlbGF5IiwgIicwcyciKTsKQEAgLTU2NSw4ICs1NTcsNiBAQCBzaG91bGRCZSgiY29tcHV0
ZWRTdHlsZS50cmFuc2l0aW9uIiwgIidhCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRU
cmFuc2l0aW9uIiwgIidhbGwgMHMgZWFzZSAwcyciKTsKIAogc3R5bGUudHJhbnNpdGlvbiA9ICJu
b25lIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlv
bicpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtp
dFRyYW5zaXRpb24nKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRpb24iLCAiJ25v
bmUnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uIiwgIidub25lIDBzIGVh
c2UgMHMnIik7CiBzaG91bGRCZSgic3R5bGUud2Via2l0VHJhbnNpdGlvbiIsICInbm9uZSciKTsK
</data>
<flag name="commit-queue"
          id="444950"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425108</attachid>
            <date>2021-04-03 12:39:00 -0700</date>
            <delta_ts>2021-04-05 12:27:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222518-20210403123858.patch</filename>
            <type>text/plain</type>
            <size>115427</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTAyICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6
ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFj
Y2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVu
YWJsZS5oOgorICAgICAgICBUdXJuIG9uIEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElF
U19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OLCBub3cgdGhhdCB3ZSBoYXZlIGl0IHVzaW5nIHNo
YXJlZAorICAgICAgICBkZWxlZ2F0aW5nIHN5bnRoZXRpYyBhdHRyaWJ1dGVzLgorCiAyMDIxLTA0
LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
YWJsZSBQcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05lYXI2MEZQU0VuYWJsZWQgYnkgZGVmYXVs
dApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3
LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9Q
RVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCi0jZGVmaW5lIEVOQUJMRV9BVFRSSUJV
VEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OIDAKKyNkZWZpbmUg
RU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJ
T04gMQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw5NyBAQAorMjAyMS0wNC0wMiAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5
IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0
eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUtaW1wbGVtZW50
IHByb3BlciAobm90IHVzaW5nIG5hbWVkLWdldHRlcnMpIHN1cHBvcnQgZm9yIHRoZSBDU1NTdHls
ZURlY2xhcmF0aW9uIGJpbmRpbmdzCisgICAgICAgIHVzaW5nIGEgbmV3IERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUgZXh0ZW5kZWQgYXR0dHJpYnV0ZSB3aGljaCBhbGxvd3MgSURM
IGF0dHJpYnV0ZXMKKyAgICAgICAgdG8gc2hhcmUgYSBjdXN0b20gZ2V0dGVyIC8gc2V0dGVyIGlt
cGxlbWVudGF0aW9uIGFuZCBkZWxlZ2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbiB0byBpdC4gV2hl
bgorICAgICAgICB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoZSBzeW50aGV0aWMgYXR0cmli
dXRlJ3MgaW1wbGVtZW50YXRpb24gaXMgcGFzc2VkIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eQorICAg
ICAgICBuYW1lIHNvIGl0IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBpdC4K
KworICAgICAgICBXZSB1c2UgdGhpcyBmb3IgQ1NTU3R5bGVEZWNsYXJhdGlvbiBieSBicmVha2lu
ZyB0aGUgaHVnZSBsaXN0IG9mIGdlbmVyYXRlZCBwcm9wZXJ0aWVzIGludG8KKyAgICAgICAgZm91
ciBncm91cHMsIGVhY2ggd2l0aCB0aGVpciBvd24gc3ludGhldGljIGF0dHJpYnV0ZS4gVGhlIGdy
b3VwcyBhcmUgYmFzZWQgb24gdGhlIGRpZmZlcmVudAorICAgICAgICB0cmFuc2Zvcm1hdGlvbiBy
dWxlcyBpbiB0aGUgc3BlYy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGU6OnNldFBhc3NpbmdQcm9wZXJ0eU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SURMQXR0cmlidXRlOjpnZXRQYXNzaW5nUHJvcGVydHlO
YW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOgorICAgICAgICAoR2V0QXR0cmlidXRlU2V0
dGVyTmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdl
bmVyYXRlU2hhcmVkU3ludGhldGljQXR0cmlidXRlRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRy
aWJ1dGVHZXR0ZXJBbmRTZXR0ZXJEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJp
YnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0
ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKE1ha2VTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgor
ICAgICAgICAoQ29tcHV0ZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMpOgorICAgICAgICAoTmVl
ZHNEZWxlZ2F0aW9uVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgorICAgICAgICAoR2V0U2hh
cmVkU3ludGhldGljQXR0cmlidXRlKToKKyAgICAgICAgKE5lZWRzUHJvcGVydHlOYW1lUGFzc2Vk
VG9BdHRyaWJ1dGVCb2R5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9i
YWxDb25zdHJ1Y3RvcnMuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDU1NQcm9wZXJ0eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpjcmVhdGVQcm90b3R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJvdG90
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29y
ZTo6SURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+
OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
X3NoYXJlZEF0dHJpYnV0ZTFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMUJvZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyQm9keSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpzdWJzcGFjZUZvcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZTo6YW5hbHl6ZUhlYXApOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmNyZWF0ZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
OjpzdWJzcGFjZUZvcik6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6d3JhcHBlcktleSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29u
c3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVy
dHlDb25zdHJ1Y3RvckdldHRlcik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
LmlkbDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlUmVxdWlyaW5n
Q29udmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExB
dHRyaWJ1dGVSZXF1aXJpbmdOb0NvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZv
ckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JXZWJL
aXRDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0
aW9uOjpwcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlW
YWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9tYWtl
cHJvcC5wbDoKKwogMjAyMS0wNC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBQZW5kaW5nSW1hZ2VCaXRtYXAgZ2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBz
Y3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMy
LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CiBjbGFzcyBJRExBdHRyaWJ1dGUgewog
cHVibGljOgogICAgIHVzaW5nIFNldHRlciA9IGJvb2woSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Q2xhc3MmLCBKU0M6OkpTVmFsdWUpOworICAgIHVzaW5nIFNldHRlclBhc3NpbmdQcm9wZXJ0eU5h
bWUgPSBib29sKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiAgICAgdXNpbmcgU3RhdGljU2V0dGVyID0gYm9vbChKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpT
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xhc3MmKTsKKyAgICB1c2luZyBHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0NsYXNzJiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHVzaW5nIFN0YXRpY0dldHRlciA9IEpT
Qzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAgICAgCiAgICAgc3RhdGljIEpTQ2xh
c3MqIGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwpAQCAt
NTMsNyArNTUsMjQgQEAgcHVibGljOgogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0aCBgc2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBs
aWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxh
bWJkYS4KKyAgICB0ZW1wbGF0ZTxTZXR0ZXJQYXNzaW5nUHJvcGVydHlOYW1lIHNldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6VGhyb3c+CisgICAgc3RhdGljIGJvb2wgc2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKworICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJv
dykKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVy
VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZv
KCksIGF0dHJpYnV0ZU5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVOYW1lKSkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPFN0YXRpY1NldHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
IHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRp
YyBib29sIHNldFN0YXRpYyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpAQCAtODMsNyArMTAyLDMyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNDOjpKU1ZhbHVlOjpl
bmNvZGUoZ2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0KSkpKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0
aCBgZ2V0YCBpZiB3ZSByZXBsYWNlIHRoZSBleHBsaWNpdCBzZXR0ZXIgZnVuY3Rpb24gdGVtcGxh
dGUgcGFyYW1ldGVyIHdpdGggYSBnZW5lcmljIGxhbWJkYS4KKyAgICB0ZW1wbGF0ZTxHZXR0ZXJQ
YXNzaW5nUHJvcGVydHlOYW1lIGdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxk
VGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CisgICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgZ2V0UGFzc2luZ1Byb3BlcnR5TmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCkpOworCisgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgeworICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNDbGFzcyo+KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6
OmVuY29kZShnZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIGF0dHJpYnV0
ZU5hbWUpKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJv
cigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRy
aWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhy
b3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UpCisgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCByZWplY3RQcm9taXNlV2l0
aEdldHRlclR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCksIGF0
dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpT
Qzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVj
dCwgYXR0cmlidXRlTmFtZSkpKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB0ZW1wbGF0ZTxT
dGF0aWNHZXR0ZXIgZ2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBnZXRTdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xODQwLDYgKzE4NDAsNyBAQCBz
dWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKSA9IEBfOwogCisgICAgcmV0dXJuIEdldEF0dHJpYnV0ZUdldHRlck5h
bWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpIGlmIElzSlNCdWlsdGlu
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRyaWJ1dGVPckZ1
bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiBNYW5nbGVB
dHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSAuICJDb25zdHJ1Y3RvciIg
aWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwpA
QCAtMTg1MCw2ICsxODUxLDcgQEAgc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIHsKICAgICBt
eSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKIAorICAgIHJldHVy
biBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsIEdldFNoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgaWYgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZX07CiAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKSBpZiBJc0pTQnVpbHRp
bigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRy
aWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0
YXRpYzsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xh
c3NOYW1lKSAuIE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPm5hbWUp
OwpAQCAtNDI4MCwyNCArNDI4MiwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUigke2NvbnN0cnVjdG9yR2V0dGVyfSk7XG4iKTsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9fSkgeworICAgICAgICAgICAg
ICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29u
dGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OwogCi0g
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtcbiIp
OwotICAgICAgICAgICAgdW5sZXNzIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKSkgewotICAgICAgICAg
ICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsbHlSZWFkV3JpdGV9OwotICAgICAgICAgICAgICAgIGlmICgk
cmVhZFdyaXRlQ29uZGl0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHJlYWRXcml0
ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJHJlYWRXcml0ZUNvbmRpdGlvbmFsKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtyZWFkV3JpdGVDb25kaXRpb25h
bFN0cmluZ31cbiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBteSAkc2V0
dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fU0VUVEVSKCR7c2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0
dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuIik7CkBAIC00ODc2LDcgKzQ4NzAsMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAorICAgIGlm
IChOZWVkc0RlbGVnYXRpb25Ub1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlKSkg
eworICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgICAgICBHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZVNl
dHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUg
KEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
fTsKKwogICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24oXEBpbXBsQ29u
dGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIEdlbmVy
YXRlQXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICB9CkBAIC01MjA3LDcgKzUyMTAsOCBAQCBzdWIg
R2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgbXkgQHNpZ25hdHVyZUFy
Z3VtZW50cyA9ICgpOwogICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0Iik7CiAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRz
LCAiJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0IikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwot
ICAgIAorICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIlByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUiKSBpZiBOZWVkc1Byb3BlcnR5TmFtZVBhc3NlZFRvQXR0cmlidXRlQm9keSgkYXR0cmli
dXRlKTsKKwogICAgIG15ICRuZWVkU2VjdXJpdHlDaGVjayA9ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcn07CiAgICAgbXkgJGhhc0N1c3RvbUdl
dHRlciA9IEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlKTsKICAgICBteSAkaXNFdmVudEhhbmRs
ZXIgPSAkYXR0cmlidXRlLT50eXBlLT5uYW1lIGVxICJFdmVudEhhbmRsZXIiOwpAQCAtNTI2OSwx
MyArNTI3Myw2IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1
cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7Y29uc3RydWN0b3JHZXR0ZXJ9KEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtc
biIpOwogICAgICAgICB9Ci0gICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q1NTUHJvcGVydHl9KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5
TmFtZXMuaCJ9ID0gMTsKLSAgICAgICAgbXkgJHByb3BlcnR5SUQgPSAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07Ci0KLSAgICAgICAgbXkgJHRvSlNFeHByZXNz
aW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsICRpbnRlcmZh
Y2UsICJpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eSR7cHJvcGVydHlJ
RH0pIiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAoJHt0b0pTRXhwcmVzc2lvbn0pKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFs
dWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiLmdldCgpKVxuIik7CkBA
IC01MzI0LDYgKzUzMjEsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5l
RGVmCiAgICAgCiAgICAgbXkgJGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lID0gImdldCI7CiAgICAg
JGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1dGUtPmlzU3Rh
dGljOworICAgICRjYWxsQXR0cmlidXRlR2V0dGVyTmFtZSAuPSAiUGFzc2luZ1Byb3BlcnR5TmFt
ZSIgaWYgTmVlZHNQcm9wZXJ0eU5hbWVQYXNzZWRUb0F0dHJpYnV0ZUJvZHkoJGF0dHJpYnV0ZSk7
CiAgICAgCiAgICAgbXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBs
YXRlUGFyYW1ldGVycywgJGF0dHJpYnV0ZUdldHRlckJvZHlOYW1lKTsKQEAgLTUzNDEsNiArNTMz
OSwyOSBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0
dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24KK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgcmV0dXJuIGlmIElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworCisgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZSk7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdl
dHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9
KTtcbiIpOworICAgIHVubGVzcyAoSXNSZWFkb25seSgkYXR0cmlidXRlKSB8fCAkY29kZUdlbmVy
YXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKKyAgICAgICAgbXkg
JHJlYWRXcml0ZUNvbmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q29uZGl0aW9uYWxseVJlYWRXcml0ZX07CisgICAgICAgIGlmICgkcmVhZFdyaXRlQ29uZGl0aW9u
YWwpIHsKKyAgICAgICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRy
ZWFkV3JpdGVDb25kaXRpb25hbCk7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIj
aWYgJHtyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZ31cbiIpOworICAgICAgICB9CisgICAgICAg
IG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUigke3NldHRlcn0pO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOworICAgIH0K
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKK30KKwogc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyRGVmaW5pdGlvbgogewogICAgIG15
ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87
CkBAIC01MzcwLDYgKzUzOTEsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVm
aW5pdGlvCiAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QiKTsKICAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICIke2Ns
YXNzTmFtZX0mIHRoaXNPYmplY3QiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcHVz
aChAc2lnbmF0dXJlQXJndW1lbnRzLCAiSlNWYWx1ZSB2YWx1ZSIpOworICAgIHB1c2goQHNpZ25h
dHVyZUFyZ3VtZW50cywgIlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUiKSBpZiBOZWVkc1Byb3Bl
cnR5TmFtZVBhc3NlZFRvQXR0cmlidXRlQm9keSgkYXR0cmlidXRlKTsKIAogICAgIG15ICRuZWVk
U2VjdXJpdHlDaGVjayA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2Vj
dXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2Vj
dXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2Vj
dXJpdHlPblNldHRlcn07CiAgICAgbXkgJGhhc0N1c3RvbVNldHRlciA9IEhhc0N1c3RvbVNldHRl
cigkYXR0cmlidXRlKTsKQEAgLTU0MTksMjEgKzU0NDEsNiBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1
dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2
bS5oZWFwLndyaXRlQmFycmllcigmdGhpc09iamVjdCwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZSh2YWx1ZSk7XG5cbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHRydWU7XG4iKTsKLSAg
ICB9IGVsc2lmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX0p
IHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siQ1NTUHJvcGVydHlOYW1lcy5oIn0gPSAxOwotCi0g
ICAgICAgIG15ICRwcm9wZXJ0eUlEID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q1NTUHJvcGVydHl9OwotCi0gICAgICAgIG15ICRleGNlcHRpb25UaHJvd2VyID0gR2V0QXR0cmli
dXRlRXhjZXB0aW9uVGhyb3dlcigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgbXkg
JHRvTmF0aXZlRXhwcmVzc2lvbiA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXR0cmli
dXRlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25h
bH0sICImbGV4aWNhbEdsb2JhbE9iamVjdCIsICJsZXhpY2FsR2xvYmFsT2JqZWN0IiwgInRoaXNP
YmplY3QiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkiLCAkZXhjZXB0aW9uVGhyb3dlcik7
Ci0KLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byBuYXRpdmVWYWx1ZSA9ICR7dG9OYXRpdmVFeHByZXNzaW9ufTtcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5JHtwcm9wZXJ0eUlEfSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgfSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiB0cnVlO1xuIik7CiAgICAgfSBlbHNpZiAoJGlzUmVwbGFjZWFibGUpIHsKICAgICAgICAg
bXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3BlcnR5LlxuIik7CkBAIC01NTIxLDYgKzU1
MjgsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgCiAg
ICAgbXkgJGNhbGxBdHRyaWJ1dGVTZXR0ZXJOYW1lID0gInNldCI7CiAgICAgJGNhbGxBdHRyaWJ1
dGVTZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgICRj
YWxsQXR0cmlidXRlU2V0dGVyTmFtZSAuPSAiUGFzc2luZ1Byb3BlcnR5TmFtZSIgaWYgTmVlZHNQ
cm9wZXJ0eU5hbWVQYXNzZWRUb0F0dHJpYnV0ZUJvZHkoJGF0dHJpYnV0ZSk7CiAgICAgCiAgICAg
bXkgQHRlbXBsYXRlUGFyYW1ldGVycyA9ICgpOwogICAgIHB1c2goQHRlbXBsYXRlUGFyYW1ldGVy
cywgJGF0dHJpYnV0ZVNldHRlckJvZHlOYW1lKTsKQEAgLTYwMDMsNiArNjAxMSwxMCBAQCBzdWIg
R2VuZXJhdGVDYWxsV2l0aAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkY2FsbFdpdGgsICJXb3JsZCIpKSB7CiAgICAgICAgIHB1c2goQGNhbGxXaXRo
QXJncywgIndvcmxkRm9yRE9NT2JqZWN0KCR7dGhpc1JlZmVyZW5jZX0pIik7CiAgICAgfQorICAg
IGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgs
ICJQcm9wZXJ0eU5hbWUiKSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01Db252
ZXJ0U3RyaW5ncy5oIik7CisgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgInByb3BlcnR5TmFt
ZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpIik7CisgICAgfQogCiAgICAgcmV0dXJuIEBjYWxs
V2l0aEFyZ3M7CiB9CkBAIC04MDQ1LDQgKzgwNTcsNzMgQEAgc3ViIEdlbmVyYXRlQ3VzdG9tRWxl
bWVudFJlYWN0aW9uc1N0YWNrSQogICAgIH0KIH0KIAorc3ViIE1ha2VTaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUKK3sKKyAgICBteSAoJG5hbWUsICRiYXNlQXR0cmlidXRlKSA9IEBfOworCisgICAg
bXkgJHNoYXJlZEF0dHJpYnV0ZSA9IElETEF0dHJpYnV0ZS0+bmV3KCk7CisgICAgJHNoYXJlZEF0
dHJpYnV0ZS0+bmFtZSgkbmFtZSk7CisgICAgJHNoYXJlZEF0dHJpYnV0ZS0+dHlwZShJRExQYXJz
ZXI6OmNsb25lVHlwZSgkYmFzZUF0dHJpYnV0ZS0+dHlwZSkpOworICAgIElETFBhcnNlcjo6Y29w
eUV4dGVuZGVkQXR0cmlidXRlcygkc2hhcmVkQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMs
ICRiYXNlQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworCisgICAgZGVsZXRlICRzaGFy
ZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGV9OworICAgICRzaGFyZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0lzU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSA9IDE7CisgICAgJHNoYXJlZEF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9ID0gIlByb3BlcnR5TmFtZSI7CisKKyAgICBy
ZXR1cm4gJHNoYXJlZEF0dHJpYnV0ZTsKK30KKworc3ViIENvbXB1dGVTaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVzCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAgIyBVc2UgYSBm
YWtlIGV4dGVuZGVkIGF0dHJpYnV0ZSwgU3ludGhldGljSURMQXR0cmlidXRlcywgdG8gc3RvcmUg
dGhlIG5ldyBhdHRyaWJ1dGVzCisgICAgaWYgKG5vdCBleGlzdHMgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc30pIHsKKyAgICAgICAgbXkgJXN5
bnRoZXRpY0lETEF0dHJpYnV0ZXMgPSAoICk7CisgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gKCk7
CisgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVz
fSkgeworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Rl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9KSB7CisgICAgICAgICAgICAgICAgbXkg
JG5hbWUgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlfTsKKyAgICAgICAgICAgICAgICBpZiAobm90ICRzeW50aGV0aWNJ
RExBdHRyaWJ1dGVzeyRuYW1lfSkgeworICAgICAgICAgICAgICAgICAgICBteSAkc3ludGhldGlj
QXR0cmlidXRlID0gTWFrZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkbmFtZSwgJGF0dHJpYnV0
ZSk7CisgICAgICAgICAgICAgICAgICAgICRzeW50aGV0aWNJRExBdHRyaWJ1dGVzeyRuYW1lfSA9
IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICRzeW50aGV0aWNBdHRy
aWJ1dGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTeW50aGV0aWNJRExBdHRyaWJ1
dGVzfSA9IFxAYXR0cmlidXRlczsKKyAgICB9Cit9CisKK3N1YiBOZWVkc0RlbGVnYXRpb25Ub1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKwor
ICAgIENvbXB1dGVTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzKCRpbnRlcmZhY2UpOworCisgICAg
cmV0dXJuIHNjYWxhciBAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRp
Y0lETEF0dHJpYnV0ZXN9fTsKK30KKworc3ViIEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQor
eworICAgIG15ICgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgQ29tcHV0ZVNo
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXMoJGludGVyZmFjZSk7CisKKyAgICBmb3JlYWNoIG15ICRz
eW50aGV0aWNBdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U3lu
dGhldGljSURMQXR0cmlidXRlc319KSB7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSBlcSAkc3lu
dGhldGljQXR0cmlidXRlLT5uYW1lKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAkc3ludGhldGlj
QXR0cmlidXRlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB1bmRlZjsKK30K
Kworc3ViIE5lZWRzUHJvcGVydHlOYW1lUGFzc2VkVG9BdHRyaWJ1dGVCb2R5Cit7CisgICAgbXkg
JGF0dHJpYnV0ZSA9IHNoaWZ0OworCisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRl
ZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxX
aXRofSwgIlByb3BlcnR5TmFtZSIpOworfQorCiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlzaW9uIDI3NTQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29u
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsNiBAQAogICAgICAgICAgICAgICAgICJ1cmwi
OiAiaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY3VzdG9tLWVsZW1lbnRz
Lmh0bWwjY2VyZWFjdGlvbnMiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICJD
U1NQcm9wZXJ0eSI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCi0gICAgICAgIH0sCiAgICAgICAgICJD
YWNoZWRBdHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRy
aWJ1dGUiXQogICAgICAgICB9LApAQCAtMTU0LDYgKzE1MCw5IEBACiAgICAgICAgICJEZWZhdWx0
RGVmaW5lT3duUHJvcGVydHkiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJp
bnRlcmZhY2UiXQogICAgICAgICB9LAorICAgICAgICAiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdCisgICAgICAgIH0sCiAgICAgICAgICJEaXNhYmxlZEJ5UXVpcmsiOiB7CiAgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwg
ImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAiY29uc3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIi
LCAiaW5jbHVkZXMiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVj
dG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjc1NDUwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFs
Q29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDYgQEAKIHBhcnRpYWwg
aW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0ZSBUZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0cmlidXRlIFRlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI7Ci0g
ICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yIFRlc3RDU1NQcm9wZXJ0eTsK
ICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciBUZXN0Q2FsbFRyYWNlcjsK
ICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0cmlidXRlIFRlc3RDYWxsYmFj
a0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVyZmFjZTsKICAgICBhdHRyaWJ1
dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpAQCAtOSw2ICs4LDcgQEAgcGFydGlhbCBpbnRlcmZh
Y2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3REZWZhdWx0VG9KU09OSW5k
aXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhl
cml0YW5jZTsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0
b3IgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OwogICAgIGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFs
OworICAgIGF0dHJpYnV0ZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNv
bnN0cnVjdG9yIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOwogICAgIGF0
dHJpYnV0ZSBUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciBUZXN0RG9tYWluU2VjdXJpdHk7
CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdEV2ZW50
Q29uc3RydWN0b3I7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yIFRl
c3RFdmVudFRhcmdldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShy
ZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
U3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQs
NiBAQCBXZWJET01UZXN0Q0VSZWFjdGlvbnMuaDogCiBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmg6IAogRE9NVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCiBXZWJET01UZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKLUpTVGVzdENTU1Byb3BlcnR5Lmg6IAotRE9NVGVzdENT
U1Byb3BlcnR5Lmg6IAotV2ViRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAogSlNUZXN0Q2FsbFRyYWNl
ci5oOiAKIERPTVRlc3RDYWxsVHJhY2VyLmg6IAogV2ViRE9NVGVzdENhbGxUcmFjZXIuaDogCkBA
IC03Niw2ICs3Myw5IEBAIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJpdC5oOiAKIEpTVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaDogCiBET01UZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRGaW5hbC5oOiAKIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmg6IAorSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oOiAKK0RPTVRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmg6IAorV2ViRE9NVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuaDogCiBKU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIERP
TVRlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIFdlYkRPTVRlc3REZXJpdmVkRGljdGlvbmFyeS5o
OiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJv
cGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnR5LmlkbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi10eXBlZGVmIFVTVlN0cmluZyBDU1NP
TVN0cmluZzsKLQotWwotICAgIEV4cG9zZWQ9VGVzdEdsb2JhbE9iamVjdAotXSBpbnRlcmZhY2Ug
VGVzdENTU1Byb3BlcnR5IHsKLSAgICBbQ0VSZWFjdGlvbnMsIENTU1Byb3BlcnR5PVByb3BlcnR5
TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJv
cGVydHk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuaWRsCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK3R5cGVk
ZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOworCitbCisgICAgRXhwb3NlZD1UZXN0R2xvYmFsT2Jq
ZWN0CitdIGludGVyZmFjZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSB7
CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNo
YXJlZEF0dHJpYnV0ZTFdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09N
U3RyaW5nIHByb3BlcnR5MTsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHkyOworICAgIFtDRVJlYWN0aW9ucywgRGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFyZWRBdHRyaWJ1dGUxXSBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBwcm9wZXJ0eTM7CisgICAg
W0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNoYXJlZEF0
dHJpYnV0ZTJdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5n
IHByb3BlcnR5NDsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMl0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0
cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk1OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3Bl
cnR5LmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI5
OCArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJKU1Rlc3RDU1NQcm9wZXJ0eS5oIgotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKLSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JNYWNyb3MuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KLSNpbmNsdWRl
IDx3dGYvVVJMLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpT
QzsKLQotLy8gQXR0cmlidXRlcwotCi1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKLQotY2xhc3MgSlNU
ZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0Owot
ICAgIHN0YXRpYyBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlKQotICAgIHsKLSAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU+
KHZtLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0
dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUsIEJh
c2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Ci0gICAgfQotICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19
OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQ
cm90b3R5cGUsIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpCYXNlKTsKLQotdXNpbmcgSlNU
ZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdENTU1Byb3BlcnR5PjsKLQotdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdENT
U1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBVTlVTRURf
UEFSQU0odm0pOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
LX0KLQotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0Q1NTUHJvcGVydHk6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENTU1By
b3BlcnR5Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLX0KLQotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yKSB9OwotCi0v
KiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAi
Y29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
Ci0gICAgeyAicHJvcGVydHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRy
aWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Q1NTUHJv
cGVydHlfcHJvcGVydHkpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9w
ZXJ0eVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0
eVByb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBy
ZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENTU1Byb3BlcnR5OjppbmZvKCksIEpTVGVz
dENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBKU0NfVE9fU1RS
SU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dENTU1Byb3BlcnR5OjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdENTU1Byb3BlcnR5
KSB9OwotCi1KU1Rlc3RDU1NQcm9wZXJ0eTo6SlNUZXN0Q1NTUHJvcGVydHkoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q1NTUHJv
cGVydHk+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJvcGVydHk+KHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdENT
U1Byb3BlcnR5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0KLSAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0Q1NTUHJvcGVy
dHk+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3Rd
IGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2Jq
ZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6Y3JlYXRlUHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1
cm4gSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwg
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBK
U1Rlc3RDU1NQcm9wZXJ0eTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdENTU1Byb3Bl
cnR5Pih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RDU1NQcm9wZXJ0eTo6
Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDU1NQcm9wZXJ0eURPTUNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpkZXN0cm95KEpTQzo6SlNDZWxs
KiBjZWxsKQotewotICAgIEpTVGVzdENTU1Byb3BlcnR5KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDU1NQ
cm9wZXJ0eTo6fkpTVGVzdENTU1Byb3BlcnR5KCk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdENTU1Byb3BlcnR5KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1
Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5R2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eSYgdGhpc09i
amVjdCkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVT
VlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UHJvcGVydHlOYW1lKSkpKTsKLX0KLQotSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0Q1NTUHJvcGVydHk+OjpnZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlHZXR0ZXIsIENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewot
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW52b2tlRnVuY3RvclByb3BhZ2F0
aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eVByb3BlcnR5TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENT
U1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQ
cm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RDU1NQcm9wZXJ0eT46OnNldDxzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eVNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1
dGVOYW1lKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q1NTUHJvcGVydHk6OnN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgc3BhY2Vz
ID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMu
bV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNl
OwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHk+IHx8ICFKU1Rlc3RDU1NQcm9wZXJ0eTo6bmVlZHNE
ZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eT4pCi0gICAgICAgIHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdENTU1Byb3BlcnR5ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7Ci0gICAgZWxzZQotICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdENT
U1Byb3BlcnR5KTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENT
U1Byb3BlcnR5LmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIHZv
aWQgKCpteVZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNp
dG9yJikgPSBKU1Rlc3RDU1NQcm9wZXJ0eTo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKLSAgICB2
b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xv
dFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzOwotICAgIGlm
IChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQp
Ci0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFj
ZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5ECi0gICAgcmV0dXJu
IHNwYWNlOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBw
ZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0
aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNl
dExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBh
bmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0Q1NTUHJvcGVydHlPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBB
YnN0cmFjdFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQotewotICAg
IFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBV
TlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0
Q1NTUHJvcGVydHlPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0Q1NTUHJvcGVydHkgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
LSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdENTU1Byb3BlcnR5LT53cmFwcGVkKCks
IGpzVGVzdENTU1Byb3BlcnR5KTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkK
LSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RDU1NQcm9w
ZXJ0eUBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkKiBfWlRWTjdXZWJDb3JlMTVUZXN0Q1NTUHJvcGVydHlFW107IH0KLSNlbmRpZgotI2VuZGlm
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmIGlt
cGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qgdm9pZCog
YWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7Ci0jaWYg
UExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRp
ZmllcigiPz9fN1Rlc3RDU1NQcm9wZXJ0eUBXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9p
ZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxNVRlc3RDU1NQcm9wZXJ0
eUVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdENTU1Byb3BlcnR5IGRv
ZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKLSAgICAvLyBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRp
b24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdENTU1Byb3BlcnR5
Pjo6dmFsdWUsICJUZXN0Q1NTUHJvcGVydHkgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAv
LyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBm
cmVlIGJ1Zywgb3IKLSAgICAvLyBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1YmNsYXNzZXMuIElmIFRl
c3RDU1NQcm9wZXJ0eSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0
b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdENTU1Byb3BlcnR5IHlvdSB0byBvcHQgb3V0
IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFs
aWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJF
TEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVy
KTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4oZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdENTU1Byb3BlcnR5JiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxl
eGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3RDU1NQcm9w
ZXJ0eSogSlNUZXN0Q1NTUHJvcGVydHk6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RDU1NQcm9wZXJ0eSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJv
cGVydHkuaAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MyAr
MCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdENTU1Byb3BlcnR5LmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SlNUZXN0Q1NTUHJvcGVydHkgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RDU1NQcm9wZXJ0eT4g
ewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdENTU1Byb3BlcnR5
PjsKLSAgICBzdGF0aWMgSlNUZXN0Q1NTUHJvcGVydHkqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENTU1By
b3BlcnR5PiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3RDU1NQcm9wZXJ0eSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9wZXJ0eT4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0Q1NTUHJvcGVydHkqIHRvV3JhcHBlZChK
U0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlND
ZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9u
QXJyYXkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBpZiBjb25zdGV4cHIgKG1v
ZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0K
LSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXpl
ciYpOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdENTU1Byb3BlcnR5KEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmKTsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0Q1NTUHJvcGVydHlP
d25lciBmaW5hbCA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAg
Ym9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiop
IGZpbmFsOwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCkgZmluYWw7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0Q1NTUHJvcGVydHkqKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyPiBvd25lcjsKLSAgICBy
ZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0Q1NT
UHJvcGVydHkqIHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0
OwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0Q1NTUHJvcGVydHkmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0Q1NTUHJvcGVydHkqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0
b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051
bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJik7Ci1pbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRl
c3RDU1NQcm9wZXJ0eT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkg
OiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZl
cnRlclRyYWl0czxUZXN0Q1NTUHJvcGVydHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBK
U1Rlc3RDU1NQcm9wZXJ0eTsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdENT
U1Byb3BlcnR5KjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzM1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVj
dEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFj
cm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVj
dG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1
dGUyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMik7CisKK2NsYXNzIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
eworICAgICAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90
eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9i
amVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZVByb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OworCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZt
KTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3Rl
bXBsYXRlPD4gdm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3RlbXBsYXRl
PD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01Db25z
dHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKKyAgICB7ICJwcm9wZXJ0eTEiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVfc2hhcmVkQXR0cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSkgfSB9LAorICAgIHsgInByb3BlcnR5MiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSB9IH0s
CisgICAgeyAicHJvcGVydHkzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
X3NoYXJlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlX3NoYXJlZEF0dHJpYnV0ZTEpIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMikgfSB9LAorICAg
IHsgInByb3BlcnR5NSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9z
aGFyZWRBdHRyaWJ1dGUyKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXMo
dm0sIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmluZm8oKSwgSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZVRhYmxlVmFsdWVz
LCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9
CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlOjpzX2luZm8gPSB7ICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSkgfTsKKworSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYm
IGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQor
Cit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf
YmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2Jq
ZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURP
TU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwor
fQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3Qg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmRl
c3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp+SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkp
Cit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90
b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9i
amVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTFHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnNoYXJlZEF0dHJpYnV0ZTEocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpKSkpOworfQorCitKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFy
ZWRBdHRyaWJ1dGUxLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZT46OmdldFBhc3NpbmdQcm9wZXJ0eU5hbWU8anNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVO
YW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0Fk
YXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIGludm9rZUZ1bmN0b3JQ
cm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFNoYXJlZEF0dHJpYnV0ZTEocHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0
cmlidXRlMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1l
IGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnNldFBhc3NpbmdQcm9wZXJ0eU5hbWU8c2V0
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUx
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorewor
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zaGFyZWRBdHRyaWJ1dGUyKHBy
b3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKSkpKTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVf
c2hhcmVkQXR0cmlidXRlMiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+OjpnZXRQYXNzaW5nUHJvcGVydHlOYW1lPGpzVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMkdldHRlciwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmli
dXRlTmFtZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTJTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBD
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJp
bmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbnZva2VGdW5j
dG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRTaGFyZWRBdHRyaWJ1dGUy
KHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJl
ZEF0dHJpYnV0ZTIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpzZXRQYXNzaW5nUHJvcGVydHlOYW1l
PHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMlNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCBhdHRyaWJ1dGVOYW1lKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQor
eworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygp
OworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsK
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQorICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5p
cXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsK
KyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVh
Y2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFy
ZSIpCisgICAgdm9pZCAoKm15VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpT
Qzo6U2xvdFZpc2l0b3ImKSA9IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGU6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0
Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2Vs
bDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFp
bnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRhLm91
dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VO
RAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjphbmFseXplSGVhcChKU0NlbGwq
IGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4oY2VsbCk7
CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3Qt
PndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNP
YmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJh
c2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90
VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFS
QU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFN
KHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Cisg
ICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLT53cmFwcGVkKCksIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAi
QyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTM4VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+JiYg
aW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lk
KiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVu
dGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29y
ZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRW
TjdXZWJDb3JlMzhUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUVbMl07Cisj
ZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRo
ZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnZhbHVlLCAiVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAg
ICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRl
ciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdl
IGN1cnJlbnRseSByZXF1aXJlIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
IHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3Jh
cChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFs
dWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlPjsKKyAgICBzdGF0aWMgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4m
JiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkp
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFs
T2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2Rl
PiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAg
eworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29u
Y3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
dWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVh
cChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAgIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4m
Jik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lciBmaW5hbCA6IHB1Ymxp
YyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopIGZpbmFsOworICAgIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7
Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQmLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSopCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5s
aW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQor
CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYpOworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJik7Citp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
UHRyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTsKKyAgICB1c2luZyBUb1dyYXBwZWRS
ZXR1cm5UeXBlID0gVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyAr
NDEsMTMgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVz
dENFUmVhY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5o
IgotI2luY2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2FsbFRy
YWNlci5oIgogI2luY2x1ZGUgIkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5oIgogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaCIKKyNp
bmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiSlNUZXN0RG9tYWluU2VjdXJpdHkuaCIKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRUYXJnZXQuaCIKQEAgLTE2Nyw3ICsxNjcs
NiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1RlCiAjZW5kaWYKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VS
ZWFjdGlvbnNDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7
Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dENTU1Byb3BlcnR5Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpOwogI2lmIEVO
QUJMRShURVNUX0NPTkRJVElPTkFMKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yKTsKQEAg
LTE3Nyw2ICsxNzYsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RH
CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVj
dG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9t
YWluU2VjdXJpdHlDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7CiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2
ZW50VGFyZ2V0Q29uc3RydWN0b3IpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHVzaW5nIEpTVGVzdEds
b2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0KIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRl
eFsyNjhdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEds
b2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDAs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAyNjcgfSwKKyAgICB7IDY1LCAtMSB9LAog
ICAgIHsgMTMsIDI2MCB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI5
MSw3ICsyOTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDM4LCAtMSB9LAogICAgIHsgMTksIDI1NyB9LAotICAgIHsg
NywgLTEgfSwKKyAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQ1LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgNiwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMzEsNyArMzMx
LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTAsIDI1NiB9
LAorICAgIHsgOSwgMjU2IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDU3LCAtMSB9LAogICAg
IHsgMTgsIC0xIH0sCkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVAogICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMTEsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQzOCw3ICs0MzgsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDEyLCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjMsMTMgKzQ2MywxMyBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDksIC0xIH0sCisgICAgeyA4
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0OCwgMjYzIH0sCi0gICAgeyA4LCAyNjIgfSwKKyAg
ICB7IDcsIDI2MiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNTA2LDcgKzUwNiw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1QKICAgICB7IDU0LCAtMSB9LAogICAgIHsgNjAsIC0xIH0sCiAgICAgeyA2NCwg
LTEgfSwKLSAgICB7IDY1LCAtMSB9LAogfTsKIAogCkBAIC01MjEsNyArNTIwLDYgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogI2VuZGlmCiAgICAgeyAiVGVzdENF
UmVhY3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAotICAgIHsgIlRlc3RDU1NQcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RDYWxs
VHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAgICB7ICJUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJ
bnRlcmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTUzMyw2ICs1MzEsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVz
dERlZmF1bHRUb0pTT05Jbmhlcml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdERlZmF1bHRU
b0pTT05Jbmhlcml0RmluYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICAgICB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9U
ZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RXZlbnRDb25z
dHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEV2ZW50VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCkBAIC04ODks
MTcgKzg4OCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmoKICAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOwotfQotCi1KU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNv
bnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9i
amVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTk4
MCw2ICs5NjgsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iagog
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+Ojpn
ZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0yNzEsNiArMjcyLDEyMCBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQorCisjZWxzZQorCitlbnVtIGNsYXNzIENT
U1Byb3BlcnR5TG9va3VwTW9kZSB7IENvbnZlcnRVc2luZ0Rhc2hQcmVmaXgsIENvbnZlcnRVc2lu
Z05vRGFzaFByZWZpeCwgTm9Db252ZXJzaW9uIH07CisKK3RlbXBsYXRlPENTU1Byb3BlcnR5TG9v
a3VwTW9kZSBtb2RlPiBzdGF0aWMgQ1NTUHJvcGVydHlJRCBsb29rdXBDU1NQcm9wZXJ0eUZyb21J
RExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21TdHJpbmcsIENTU1Byb3BlcnR5SUQ+PiBjYWNoZTsK
KworICAgIGlmIChhdXRvIGlkID0gY2FjaGUuZ2V0KCkuZ2V0KGF0dHJpYnV0ZSkpCisgICAgICAg
IHJldHVybiBpZDsKKworICAgIGNoYXIgb3V0cHV0QnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxl
bmd0aCArIDFdOworICAgIGNoYXIqIG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRCdWZmZXI7
CisgICAgY29uc3QgY2hhciogb3V0cHV0QnVmZmVyU3RhcnQgPSBvdXRwdXRCdWZmZXJDdXJyZW50
OworCisgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29u
dmVydFVzaW5nRGFzaFByZWZpeCB8fCBtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29u
dmVydFVzaW5nTm9EYXNoUHJlZml4KSB7CisgICAgICAgIC8vIENvbnZlcnNpb24gaXMgaW1wbGVt
ZW50aW5nIHRoZSAiSURMIGF0dHJpYnV0ZSB0byBDU1MgcHJvcGVydHkgYWxnb3JpdGhtIgorICAg
ICAgICAvLyBmcm9tIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jaWRsLWF0dHJpYnV0
ZS10by1jc3MtcHJvcGVydHkuCisKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1By
b3BlcnR5TG9va3VwTW9kZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeCkKKyAgICAgICAgICAgICpv
dXRwdXRCdWZmZXJDdXJyZW50KysgPSAnLSc7CisKKyAgICAgICAgcmVhZENoYXJhY3RlcnNGb3JQ
YXJzaW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8gYnVmZmVyKSB7CisgICAgICAgICAgICB3aGlsZSAo
YnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgeworICAgICAgICAgICAgICAgIGF1dG8g
YyA9ICpidWZmZXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzQVND
SUkoYyksICJJbnZhbGlkIHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9ICctJzsKKyAgICAgICAg
ICAgICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9IHRvQVNDSUlMb3dlclVuY2hlY2tl
ZChjKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKm91dHB1
dEJ1ZmZlckN1cnJlbnQrKyA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAg
ICAqb3V0cHV0QnVmZmVyQ3VycmVudCA9ICdcMCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2hh
ciBvdXRwdXRCdWZmZXJbbWF4Q1NTUHJvcGVydHlOYW1lTGVuZ3RoICsgMV07CisgICAgICAgIGNo
YXIqIG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRCdWZmZXI7CisgICAgICAgIGNvbnN0IGNo
YXIqIG91dHB1dEJ1ZmZlclN0YXJ0ID0gb3V0cHV0QnVmZmVyQ3VycmVudDsKKworICAgICAgICBy
ZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoYXR0cmlidXRlLCBbJl0oYXV0byBidWZmZXIpIHsKKyAg
ICAgICAgICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byBjID0gKmJ1ZmZlcisrOworICAgICAgICAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoYyA9PSAnLScgfHwgaXNBU0NJSUxvd2VyKGMpLCAiSW52YWxpZCBwcm9wZXJ0
eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgICAgICpvdXRwdXRCdWZmZXJDdXJyZW50ID0gJ1wwJzsKKyAgICB9CisKKyAg
ICBhdXRvIGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3BlcnR5KG91dHB1dEJ1ZmZlclN0YXJ0LCBv
dXRwdXRCdWZmZXJDdXJyZW50IC0gb3V0cHV0QnVmZmVyKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGhhc2hUYWJsZUVudHJ5LCAiSW52YWxpZCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gaWQgPSBzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihoYXNoVGFibGVFbnRyeS0+aWQpOworICAgIGNhY2hlLmdldCgpLmFkZChh
dHRyaWJ1dGUsIGlkKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xh
cmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9t
U3RyaW5nJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9va3VwQ1NTUHJv
cGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29udmVydFVzaW5n
Tm9EYXNoUHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVy
dHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRy
aWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFs
dWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUoY29u
c3QgQXRvbVN0cmluZyYgYXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGF1
dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9w
ZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ05vRGFzaFByZWZpeD4oYXR0cmlidXRlKTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAi
SW52YWxpZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxz
ZSk7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yV2Vi
S2l0Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlKQoreworICAg
IGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQ
cm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ0Rhc2hQcmVmaXg+KGF0dHJpYnV0ZSk7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwg
IkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpOworfQor
CitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVl
Rm9yV2ViS2l0Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1By
b3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2lu
Z0Rhc2hQcmVmaXg+KGF0dHJpYnV0ZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0
eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJp
YnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eUlELCB2YWx1ZSwgZmFsc2UpOworfQorCitTdHJpbmcgQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3Ry
aW5nJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9va3VwQ1NTUHJvcGVy
dHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Tm9Db252ZXJzaW9uPihh
dHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9w
ZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9w
ZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRy
aWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9v
a3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Tm9D
b252ZXJzaW9uPihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJ
RCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1
dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJu
YWwocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30KKworU3RyaW5nIENTU1N0eWxlRGVjbGFy
YXRpb246OnByb3BlcnR5VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0
cmluZyYgYXR0cmlidXRlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3Bl
cnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ0Rh
c2hQcmVmaXg+KGF0dHJpYnV0ZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlE
ICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUlu
dGVybmFsKHByb3BlcnR5SUQpOworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0
b21TdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBhdXRvIHBy
b3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGU8Q1NTUHJvcGVydHlM
b29rdXBNb2RlOjpDb252ZXJ0VXNpbmdEYXNoUHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlk
IGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
cmV0dXJuIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30K
KwogI2VuZGlmCiAKIFN0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpjc3NGbG9hdCgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDI3NTQ1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDYgKzc5LDI2IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxWYXJpYW50PFN0
cmluZywgZG91YmxlPj4gbmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgU3RyaW5nIHZh
bHVlLCBib29sJiBwcm9wZXJ0eVN1cHBvcnRlZCk7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1
cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKKyNlbHNlCisgICAgLy8gRklYTUU6IEl0IHdv
dWxkIGJlIG1vcmUgZWZmaWNpZW50LCBieSB2aXJ0dWUgb2YgYXZvaWRpbmcgdGhlIHRleHQgdHJh
bnNmb3JtYXRpb24gYW5kIGhhc2ggbG9va3VwIGN1cnJlbnRseQorICAgIC8vIHJlcXVpcmVkIGlu
IHRoZSBpbXBsZW1lbnRhdGlvbiwgaWYgd2UgY291bGQgY291bGQgc211Z2dsZSB0aGUgQ1NTUHJv
cGVydHlJRCB0aHJvdWdoIHRoZSBiaW5kaW5ncywgcGVyaGFwcworICAgIC8vIGJ5IGVuY29kaW5n
IGl0IGludG8gdGhlIEhhc2hUYWJsZVZhbHVlIGFuZCB0aGVuIHBhc3NpbmcgaXQgdG9nZXRoZXIg
d2l0aCB0aGUgUHJvcGVydHlOYW1lLgorCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZv
ciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Nv
bS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24tY2FtZWxfY2FzZWRfYXR0cmlidXRlLgorICAgIFN0
cmluZyBwcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3Ry
aW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvckNhbWVsQ2Fz
ZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisgICAg
Ly8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIGh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24td2Vi
a2l0X2Nhc2VkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcgcHJvcGVydHlWYWx1ZUZvcldlYktpdENh
c2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRQcm9wZXJ0eVZhbHVlRm9yV2ViS2l0Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZv
ciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Nv
bS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24tZGFzaGVkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcg
cHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0
ZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBTaGFyZWQgaW1w
bGVtZW50YXRpb24gZm9yIGFsbCBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggbm9uLXN0YW5kYXJkIEVw
dWItY2FzZWQuCisgICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1
dGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5
VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBwYXNzIGluIGEg
U2V0dGluZ3MmIHRvIHdvcmsgY29ycmVjdGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmlkbAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsy
NSw2IEBACiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRp
b24sCiAgICAgRXhwb3NlZD1XaW5kb3csCi0jaWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9C
QVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pIHx8ICFFTkFCTEVfQVRU
UklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTgotICAgIERl
ZmF1bHREZWZpbmVPd25Qcm9wZXJ0eQotI2VuZGlmCiBdIGludGVyZmFjZSBDU1NTdHlsZURlY2xh
cmF0aW9uIHsKICAgICAvLyBGSVhNRTogVGhlc2UgYXR0cmlidXRlcyBhbmQgZnVuY3Rpb25zIHNo
b3VsZCB1c2UgQ1NTT01TdHJpbmcgbm90IERPTVN0cmluZy4KIApAQCAtNDYsMTIgKzQzLDQgQEAK
ICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5U2hvcnRoYW5kKG9wdGlvbmFsIERPTVN0cmluZyBw
cm9wZXJ0eU5hbWUpOwogICAgIGJvb2xlYW4gaXNQcm9wZXJ0eUltcGxpY2l0KG9wdGlvbmFsIERP
TVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAgIERlcHJlY2F0ZWRDU1NPTVZhbHVlPyBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotCi0jaWYgIWRlZmluZWQoRU5B
QkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04p
IHx8ICFFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNM
QVJBVElPTgotICAgIC8vIFVzZSBuYW1lZCBnZXR0ZXJzL3NldHRlcnMgZm9yIGFsbCBzdXBwb3J0
IENTUyBwcm9wZXJ0eSBuYW1lcy4gVGhlIHNwZWMgc2F5cwotICAgIC8vIHRoZXNlIHNob3VsZCBi
ZSBub3JtYWwgYXR0cmlidXRlcywgYnV0IHRoZXJlIGFyZSB0b28gbWFueSBjb21iaW5hdGlvbnMg
d2l0aAotICAgIC8vIHByZWZpeGVzIGZvciB0aGlzIHRvIGJlIHByYWN0aWNhbCB3aXRoIGN1cnJl
bnQgY29kZSBnZW5lcmF0aW9uLgotICAgIGdldHRlciAoRE9NU3RyaW5nIG9yIGRvdWJsZSkgKERP
TVN0cmluZyBuYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIENhbGxOYW1lZFNldHRlck9ubHlGb3JT
dXBwb3J0ZWRQcm9wZXJ0aWVzXSBzZXR0ZXIgdW5kZWZpbmVkIChET01TdHJpbmcgbmFtZSwgW0xl
Z2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUpOwotI2VuZGlmCiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL21ha2Vwcm9wLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI3LDcgKzE0MjcsNyBAQCBm
b3JlYWNoIG15ICRuYW1lT3JBbGlhcyAoQG5hbWVzQW5kQWxpYXNlCiAgICAgbXkgJG5hbWUgPSAk
bmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkgJHByb3BlcnR5SWQg
PSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OwogCi0gICAgbXkgQGV4
dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7Cisg
ICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0cmlidXRlIik7CiAg
ICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0
dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OwogICAgIHB1c2go
QGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFn
c3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKQEAgLTE0NTAs
NyArMTQ1MCw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL14KICAg
ICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVPckFsaWFzfTsKICAgICBt
eSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lfX07
CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNTU1Byb3BlcnR5PSR7cHJv
cGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkRlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURM
QXR0cmlidXRlIik7CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVk
QnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5h
bWV9OwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGlt
ZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CiAgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFs
dWVzKTsKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVw
IHsgJF8gPX4gL1wKICAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVP
ckFsaWFzfTsKICAgICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2Vz
VG9OYW1leyRuYW1lfX07CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNT
U1Byb3BlcnR5PSR7cHJvcGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1
ZXMgPSAoIkRlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1ZUZv
ckRhc2hlZElETEF0dHJpYnV0ZSIpOwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVz
LCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5n
c0ZsYWdzeyRuYW1lfTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJs
ZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5h
bWV9OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0
dHJpYnV0ZVZhbHVlcyk7CkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBmb3JlYWNoIG15ICRuYW1lT3JB
bGlhcyAoZ3JlcCB7ICRfID1+IC9eCiAgICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9O
YW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkgJHByb3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVz
QW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OwogCi0gICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFs
dWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAgbXkgQGV4dGVuZGVkQXR0
cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXByb3Bl
cnR5VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1dGUiKTsKICAgICBwdXNoKEBleHRlbmRlZEF0
dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0i
KSBpZiAkc2V0dGluZ3NGbGFnc3skbmFtZX07CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVW
YWx1ZXMsICJFbmFibGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVu
dGltZUZsYWdzeyRuYW1lfTsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAi
LCBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NDUwKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjEtMDQtMDIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJl
ZHVjZSBjb21waWxlIHRpbWUgYW5kIGJpbmFyeSBzaXplIGNvc3Qgb2YgZW5hYmxpbmcgcHJvcGVy
IENTU1N0eWxlRGVjbGFyYXRpb24gcHJvcGVydHkgYWNjZXNzIGJlaGF2aW9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1MTgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc1MTM2ODg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVz
Lmh0bWw6CisgICAgICAgICogZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24uaHRtbDoKKyAgICAgICAg
UmVtb3ZlIHRlc3RzIGZvciBpdGVyYXRpb24gb3JkZXIsIHdoaWNoIGlzIG5vdCBzdGFuZGFyZGl6
ZWQsIGFuZCBub3QgY29uc2lzdGVudCBhbW9uZworICAgICAgICBicm93c2Vycy4KKworICAgICAg
ICAqIGZhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9w
ZXJ0aWVzLWRlc2NyaXB0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0NTU1N0
eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3Iu
aHRtbDoKKyAgICAgICAgVXBkYXRlIG5vdyB0aGF0IHRoZSBwcm9wZXJ0aWVzIGFyZSBwcm9wZXIg
YXR0cmlidXRlcyBvbiB0aGUgcHJvdG90eXBlLgorCisgICAgICAgICoganMvZG9tL3B1dC1vdmVy
cmlkZS1zaG91bGQtbm90LXVzZS1pYy5odG1sOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYSBE
T01TdHJpbmdMaXN0IGFzIHRoZSBvYmplY3QgdGhhdCBvdmVycmlkZXMgcHV0LCBzaW5jZSBDU1NT
dHlsZURlY2xhcmF0aW9uIG5vIGxvbmdlciBkb2VzLgorCisgICAgICAgICogdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbnMtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbnMtcGFyc2luZy5odG1sOgorICAgICAgICBSZW1vdmUgT2JqZWN0LmtleXMoKSBh
c3BlY3Qgb2YgdGhlIHRlc3QsIHdoaWNoIGlzIG5vIGxvbmdlciBtZWFuaW5nZnVsIHNpbmNlIHRo
ZQorICAgICAgICBwcm9wZXJ0aWVzIHNob3VsZCBubyBsb25nZXIgZXhpc3QgaW4gdGhlIHJlc3Vs
dCBzZXQuCisKIDIwMjEtMDQtMDIgIEFtaXIgTWFyayBKciAgPGFtaXJfbWFya0BhcHBsZS5jb20+
CiAKICAgICAgICAgWyBNYWNPUyBdIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9tYWNvcy1p
bmxpbmUtbWVkaWEtY29udHJvbHMvbWFjb3MtaW5saW5lLW1lZGlhLWRyb3BwaW5nLWNvbnRyb2xz
Lmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZS1lbnVtZXJhdGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUt
cHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDYgQEAg
UEFTUyAnV2Via2l0VHJhbnNmb3JtJyBpbiBkb2N1bWVudC5ib2R5LgogUEFTUyAnYm9ndXMtcmFu
ZG9tLVN0cmluZycgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSBpcyBmYWxzZQogUEFTUyAnY3NzVGV4
dCcgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSBpcyB0cnVlCiBQQVNTICdnZXRQcm9wZXJ0eUNTU1Zh
bHVlJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIGlzIHRydWUKLVBBU1MgVGhlIENTUyBwcm9wZXJ0
eSBvcmRlciBpcyBjb3JyZWN0CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1w
cm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUt
ZW51bWVyYXRlLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMjMsMzMgKzIzLDYgQEAKICAgICAgICAgc2hvdWxkQmVGYWxzZSgiJ2JvZ3VzLXJhbmRv
bS1TdHJpbmcnIGluIGRvY3VtZW50LmJvZHkuc3R5bGUiKTsKICAgICAgICAgc2hvdWxkQmVUcnVl
KCInY3NzVGV4dCcgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSIpOwogICAgICAgICBzaG91bGRCZVRy
dWUoIidnZXRQcm9wZXJ0eUNTU1ZhbHVlJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIik7Ci0KLSAg
ICAgICAgLy8gVGVzdCBDU1MgcHJvcGVydHkgb3JkZXIuCi0gICAgICAgIHZhciBzdGFydGVkOwot
ICAgICAgICB2YXIgY3NzUHJvcGVydHlDb3VudCA9IDA7Ci0gICAgICAgIHZhciBwcmV2aW91czsK
LSAgICAgICAgdmFyIHNlZW5GaWx0ZXI7Ci0gICAgICAgIGZvciAodmFyIHAgaW4gZG9jdW1lbnQu
Ym9keS5zdHlsZSkgewotICAgICAgICAgICAgaWYgKHAgPT09ICJhbGlnbm1lbnRCYXNlbGluZSIp
Ci0gICAgICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoIXN0YXJ0
ZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAocCA9PT0gImZp
bHRlciIpCi0gICAgICAgICAgICAgICAgc2VlbkZpbHRlciA9IHRydWU7Ci0gICAgICAgICAgICBp
ZiAocHJldmlvdXMgJiYgcHJldmlvdXMgPj0gcCkgewotICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkludmFsaWQgQ1NTLW1hcHBlZCBwcm9wZXJ0eSBvcmRlcjogJyIgKyBwICsgIicgYWZ0ZXIg
JyIgKyBwcmV2aW91cyArICInIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoKytjc3NQcm9wZXJ0eUNvdW50IDw9IDQwMCkKLSAgICAgICAg
ICAgICAgICBwcmV2aW91cyA9IHA7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoc2VlbkZpbHRlcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiVGhlIENT
UyBwcm9wZXJ0eSBvcmRlciBpcyBjb3JyZWN0Iik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUaGUgJ2ZpbHRlcicgcHJvcGVydHkgd2FzIG5v
dCBlbnVtZXJhdGVkIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KICAgICA8L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY1LDE0ICs2NSw2IEBAIFBBU1MgcmVzdWx0
QXJyYXlbMV0uaXRlbSBpcyBjc3NSdWxlTGlzdC4KIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAn
MicKIFBBU1MgcmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBjc3NSdWxlTGlzdC5pdGVtKDIpCiAKLVtv
YmplY3QgQ1NTU3R5bGVEZWNsYXJhdGlvbl0KLVBBU1MgcmVzdWx0QXJyYXlbMF0uaSBpcyAnMCcK
LVBBU1MgcmVzdWx0QXJyYXlbMF0uaXRlbSBpcyBjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMCkK
LVBBU1MgcmVzdWx0QXJyYXlbMV0uaSBpcyAnMScKLVBBU1MgcmVzdWx0QXJyYXlbMV0uaXRlbSBp
cyBjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMSkKLVBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAn
MicKLVBBU1MgcmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0o
MikKLQogW29iamVjdCBDU1NWYWx1ZUxpc3RdCiBQQVNTIHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAx
MAogUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9tTGlzdEVudW1lcmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLmh0bWwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzcsMTcgKzE3Nyw2IEBAIHNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pdGVtIiwgImNzc1J1
bGUKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5pIiwgIicyJyIpOwogc2hvdWxkQmUoInJlc3Vs
dEFycmF5WzJdLml0ZW0iLCAiY3NzUnVsZUxpc3QuaXRlbSgyKSIpOwogCi0vLyBDU1NTdHlsZURl
Y2xhcmF0aW9uCi0vL2RlYnVnKGVzY2FwZUhUTUwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3N0eWxlJykpKTsKLXZhciBjc3NTdHlsZURlY2xhcmF0aW9uID0gZG9jdW1lbnQuc3R5bGVT
aGVldHNbMl0uY3NzUnVsZXNbMF0uc3R5bGU7Ci1yZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGNz
c1N0eWxlRGVjbGFyYXRpb24pOwotc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAnIik7
Ci1zaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJjc3NTdHlsZURlY2xhcmF0aW9uLml0
ZW0oMCkiKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwgIicxJyIpOwotc2hvdWxkQmUo
InJlc3VsdEFycmF5WzFdLml0ZW0iLCAiY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDEpIik7Ci1z
aG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaSIsICInMiciKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJh
eVsyXS5pdGVtIiwgImNzc1N0eWxlRGVjbGFyYXRpb24uaXRlbSgyKSIpOwotCiAvLyBDU1NWYWx1
ZUxpc3QKIHZhciBjc3NWYWx1ZUxpc3QgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnb2wnKVswXSkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9y
ZGVyLXNwYWNpbmcnKTsKIHJlc3VsdEFycmF5ID0gaXRlcmF0ZUxpc3QoY3NzVmFsdWVMaXN0KTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVk
ZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNs
YXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU0
NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxl
ZGVjbGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMyw3ICszLDggQEAgVGhpcyB0ZXN0cyB0aGUgZGVzY3JpcHRvciBvZiBDU1NTdHls
ZURlYwogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZGVzY3JpcHRvclsnd3Jp
dGFibGUnXSBpcyB0cnVlCitQQVNTIGRlc2NyaXB0b3JbJ2dldCddIGlzIGFuIGluc3RhbmNlIG9m
IEZ1bmN0aW9uCitQQVNTIGRlc2NyaXB0b3JbJ3NldCddIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0
aW9uCiBQQVNTIGRlc2NyaXB0b3JbJ2VudW1lcmFibGUnXSBpcyB0cnVlCiBQQVNTIGRlc2NyaXB0
b3JbJ2NvbmZpZ3VyYWJsZSddIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5
bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3IuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRp
b24tcHJvcGVydGllcy1kZXNjcmlwdG9yLmh0bWwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1w
cm9wZXJ0aWVzLWRlc2NyaXB0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDkgQEAK
ICAgICA8c2NyaXB0PgogICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgZGVzY3Jp
cHRvciBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnRpZXMuIik7CiAKLSAgICAgICAgdmFy
IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRvY3VtZW50LmJv
ZHkuc3R5bGUsICdjb2xvcicpOwotICAgICAgICBzaG91bGRCZVRydWUoImRlc2NyaXB0b3JbJ3dy
aXRhYmxlJ10iKTsKKyAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGRvY3VtZW50LmJvZHkuc3R5bGUuX19wcm90b19fLCAnY29sb3InKTsKKyAg
ICAgICAgc2hvdWxkQmVUeXBlKCJkZXNjcmlwdG9yWydnZXQnXSIsICJGdW5jdGlvbiIpOworICAg
ICAgICBzaG91bGRCZVR5cGUoImRlc2NyaXB0b3JbJ3NldCddIiwgIkZ1bmN0aW9uIik7CiAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiZGVzY3JpcHRvclsnZW51bWVyYWJsZSddIik7CiAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiZGVzY3JpcHRvclsnY29uZmlndXJhYmxlJ10iKTsKICAgICA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NDUwKQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTA0LTAyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6ZSBjb3N0IG9mIGVuYWJs
aW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFjY2VzcyBiZWhhdmlvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTE4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20v
Y3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBk
YXRlIHRlc3QgcmVzdWx0IG5vdyB0aGF0IGl0IGlzIHBhc3NpbmcuCisKIDIwMjEtMDQtMDIgIEFs
ZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBb
UmVwbGFjZWFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSBmcm9tIGBkb2N1bWVudC5hbGxgCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9jc3Mt
c3R5bGUtZGVjbGFyYXRpb24tYWxpYXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29tcGF0
L2Nzcy1zdHlsZS1kZWNsYXJhdGlvbi1hbGlhcy1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29tcGF0L2Nzcy1zdHlsZS1kZWNsYXJhdGlvbi1hbGlhcy1lbnVtZXJhdGlvbi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgQWxpYXNlcyBl
bnVtZXJhdGVkIG9uIENTU1N0eWxlRGVjbGFyYXRpb24gYXNzZXJ0X3RydWU6IEFsaWFzIHdlYmtp
dFRyYW5zZm9ybSBzZWVuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIEFsaWFzZXMgZW51
bWVyYXRlZCBvbiBDU1NTdHlsZURlY2xhcmF0aW9uCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRpb24t
cHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3Nzc3R5bGVkZWNsYXJhdGlvbi1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3Nzc3R5bGVkZWNsYXJh
dGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMg
QEAKIAotRkFJTCBDU1MgVGVzdDogQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0aWVzIGFyZSBk
ZWZpbmVkIGFzIFdlYklETCBhdHRyaWJ1dGVzLCBub3QgdXNpbmcgZ2V0T3duUHJvcGVydHlOYW1l
cygpIGFzc2VydF9mYWxzZTogc2hvdWxkbid0IGhhdmUgYW4gb3duIHByb3BlcnR5IGZvciBXZWJJ
REwgYXR0cmlidXRlcyBleHBlY3RlZCBmYWxzZSBnb3QgdHJ1ZQorUEFTUyBDU1MgVGVzdDogQ1NT
U3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIGFzIFdlYklETCBhdHRyaWJ1
dGVzLCBub3QgdXNpbmcgZ2V0T3duUHJvcGVydHlOYW1lcygpCiAKSW5kZXg6IExheW91dFRlc3Rz
L2pzL2RvbS9wdXQtb3ZlcnJpZGUtc2hvdWxkLW5vdC11c2UtaWMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWwJ
KHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2pzL2RvbS9wdXQtb3ZlcnJpZGUtc2hv
dWxkLW5vdC11c2UtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwxMCArOCwxMCBAQAogPHNj
cmlwdD4KICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICBmdW5jdGlvbiB0cmFuc2l0aW9u
ZWQoKSB7Ci0gICAgICAgICAgICBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKS5z
dHlsZTsKKyAgICAgICAgICAgIGRhdGFzZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyku
ZGF0YXNldDsKICAgICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAyMDsgaSsrKQotICAgICAg
ICAgICAgICAgIHN0eWxlWydwJytpXSA9IGk7Ci0gICAgICAgICAgICByZXR1cm4gc3R5bGU7Cisg
ICAgICAgICAgICAgICAgZGF0YXNldFsncCcraV0gPSBpOworICAgICAgICAgICAgcmV0dXJuIGRh
dGFzZXQ7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBwdXR0ZXIobykgewpJbmRleDog
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2lu
Zy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL3RyYW5zaXRp
b25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02
LDggKzYsNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBWYWxp
ZCB0cmFuc2l0aW9uLXByb3BlcnR5IHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0
aW9uUHJvcGVydHkgaXMgJ2FsbCcKIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9u
UHJvcGVydHkgaXMgJ2FsbCcKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5z
aXRpb25Qcm9wZXJ0eScpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhP
Zignd2Via2l0VHJhbnNpdGlvblByb3BlcnR5JykgaXMgLTEKIFBBU1Mgc3R5bGUudHJhbnNpdGlv
blByb3BlcnR5IGlzICdub25lJwogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0
eSBpcyAnbm9uZScKIFBBU1Mgc3R5bGUud2Via2l0VHJhbnNpdGlvblByb3BlcnR5IGlzICdub25l
JwpAQCAtMTAwLDggKzk4LDYgQEAgUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25Q
cm9wZQogVmFsaWQgdHJhbnNpdGlvbi1kdXJhdGlvbiB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5
bGUudHJhbnNpdGlvbkR1cmF0aW9uIGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhP
ZigndHJhbnNpdGlvbkR1cmF0aW9uJykgaXMgbm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxl
KS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24nKSBpcyAtMQogUEFTUyBzdHlsZS50
cmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25E
dXJhdGlvbiBpcyAnMHMnCiBQQVNTIHN0eWxlLndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiBpcyAn
MHMnCkBAIC0xNTAsOCArMTQ2LDYgQEAgUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRp
b25EdXJhdAogVmFsaWQgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gdmFsdWVzLgogUEFTUyBj
b21wdXRlZFN0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiBpcyAnZWFzZScKIFBBU1MgY29t
cHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2Vhc2UnCi1QQVNT
IE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24nKSBp
cyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbicpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5j
dGlvbiBpcyAnbGluZWFyJwogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5j
dGlvbiBpcyAnbGluZWFyJwogUEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rp
b24gaXMgJ2xpbmVhcicKQEAgLTMwMCw4ICsyOTQsNiBAQCBQQVNTIGNvbXB1dGVkU3R5bGUud2Vi
a2l0VHJhbnNpdGlvblRpbWluCiBWYWxpZCB0cmFuc2l0aW9uLWRlbGF5IHZhbHVlcy4KIFBBU1Mg
Y29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRGVsYXkgaXMgJzBzJwogUEFTUyBjb21wdXRlZFN0eWxl
LndlYmtpdFRyYW5zaXRpb25EZWxheSBpcyAnMHMnCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5p
bmRleE9mKCd0cmFuc2l0aW9uRGVsYXknKSBpcyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5
bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25EZWxheScpIGlzIC0xCiBQQVNTIHN0eWxlLnRy
YW5zaXRpb25EZWxheSBpcyAnMHMnCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbkRlbGF5
IGlzICcwcycKIFBBU1Mgc3R5bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5IGlzICcwcycKQEAgLTM1
MCw4ICszNDIsNiBAQCBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5CiBW
YWxpZCB0cmFuc2l0aW9uIHNob3J0aGFuZCB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJh
bnNpdGlvbiBpcyAnYWxsIDBzIGVhc2UgMHMnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJh
bnNpdGlvbiBpcyAnYWxsIDBzIGVhc2UgMHMnCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRl
eE9mKCd0cmFuc2l0aW9uJykgaXMgbm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRl
eE9mKCd3ZWJraXRUcmFuc2l0aW9uJykgaXMgLTEKIFBBU1Mgc3R5bGUudHJhbnNpdGlvbiBpcyAn
bm9uZScKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uIGlzICdub25lIDBzIGVhc2UgMHMn
CiBQQVNTIHN0eWxlLndlYmtpdFRyYW5zaXRpb24gaXMgJ25vbmUnCkluZGV4OiBMYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy5odG1sCShyZXZpc2lvbiAy
NzU0NTApCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDYgQEAgc2hvdWxkQmUoImNvbXB1dGVkU3R5
bGUudHJhbnNpdGlvblByb3Blcgogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNp
dGlvblByb3BlcnR5IiwgIidhbGwnIik7CiAKIHN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSA9ICJu
b25lIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlv
blByb3BlcnR5JykiLCAiLTEiKTsKLXNob3VsZEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhP
Zignd2Via2l0VHJhbnNpdGlvblByb3BlcnR5JykiLCAiLTEiKTsKIHNob3VsZEJlKCJzdHlsZS50
cmFuc2l0aW9uUHJvcGVydHkiLCAiJ25vbmUnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50
cmFuc2l0aW9uUHJvcGVydHkiLCAiJ25vbmUnIik7CiBzaG91bGRCZSgic3R5bGUud2Via2l0VHJh
bnNpdGlvblByb3BlcnR5IiwgIidub25lJyIpOwpAQCAtMTc2LDggKzE3NCw2IEBAIHNob3VsZEJl
KCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EdXJhdGkKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxl
LndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiIsICInMHMnIik7CiAKIHN0eWxlLnRyYW5zaXRpb25E
dXJhdGlvbiA9ICIwcyI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2Yo
J3RyYW5zaXRpb25EdXJhdGlvbicpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5
bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25EdXJhdGlvbicpIiwgIi0xIik7CiBzaG91bGRC
ZSgic3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uIiwgIicwcyciKTsKIHNob3VsZEJlKCJjb21wdXRl
ZFN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiIsICInMHMnIik7CiBzaG91bGRCZSgic3R5bGUud2Vi
a2l0VHJhbnNpdGlvbkR1cmF0aW9uIiwgIicwcyciKTsKQEAgLTI1Niw4ICsyNTIsNiBAQCBzaG91
bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uVGltaW5nCiBzaG91bGRCZSgiY29tcHV0ZWRT
dHlsZS53ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2Vhc2UnIik7CiAKIHN0eWxl
LnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiA9ICJsaW5lYXIiOwotc2hvdWxkTm90QmUoIk9iamVj
dC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24nKSIsICItMSIp
Owotc2hvdWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24nKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbiIsICInbGluZWFyJyIpOwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uIiwgIidsaW5lYXInIik7CiBzaG91bGRCZSgic3R5bGUud2Via2l0
VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidsaW5lYXInIik7CkBAIC00ODUsOCArNDc5LDYg
QEAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbkRlbGF5Igogc2hvdWxkQmUoImNv
bXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5IiwgIicwcyciKTsKIAogc3R5bGUudHJh
bnNpdGlvbkRlbGF5ID0gIjBzIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5k
ZXhPZigndHJhbnNpdGlvbkRlbGF5JykiLCAiLTEiKTsKLXNob3VsZEJlKCJPYmplY3Qua2V5cyhz
dHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvbkRlbGF5JykiLCAiLTEiKTsKIHNob3VsZEJl
KCJzdHlsZS50cmFuc2l0aW9uRGVsYXkiLCAiJzBzJyIpOwogc2hvdWxkQmUoImNvbXB1dGVkU3R5
bGUudHJhbnNpdGlvbkRlbGF5IiwgIicwcyciKTsKIHNob3VsZEJlKCJzdHlsZS53ZWJraXRUcmFu
c2l0aW9uRGVsYXkiLCAiJzBzJyIpOwpAQCAtNTY1LDggKzU1Nyw2IEBAIHNob3VsZEJlKCJjb21w
dXRlZFN0eWxlLnRyYW5zaXRpb24iLCAiJ2EKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndlYmtp
dFRyYW5zaXRpb24iLCAiJ2FsbCAwcyBlYXNlIDBzJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uID0g
Im5vbmUiOwotc2hvdWxkTm90QmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0
aW9uJykiLCAiLTEiKTsKLXNob3VsZEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Vi
a2l0VHJhbnNpdGlvbicpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlvbiIsICIn
bm9uZSciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb24iLCAiJ25vbmUgMHMg
ZWFzZSAwcyciKTsKIHNob3VsZEJlKCJzdHlsZS53ZWJraXRUcmFuc2l0aW9uIiwgIidub25lJyIp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>425158</attachid>
            <date>2021-04-05 09:31:42 -0700</date>
            <delta_ts>2021-04-05 09:31:42 -0700</delta_ts>
            <desc>Test overloading of non-type template parameters</desc>
            <filename>testOverloading.cpp</filename>
            <type>text/x-csrc</type>
            <size>539</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1c2luZyBGdW5jdGlvblBvaW50ZXIxID0gYm9vbChpbnQpOwp1
c2luZyBGdW5jdGlvblBvaW50ZXIyID0gYm9vbChpbnQsIGludCk7CgpzdGF0aWMgYm9vbCBvbmVQ
YXJhbWV0ZXIoaW50KQp7CiAgICByZXR1cm4gdHJ1ZTsKfQoKc3RhdGljIGJvb2wgdHdvUGFyYW1l
dGVyKGludCkKewogICAgcmV0dXJuIGZhbHNlOwp9Cgp0ZW1wbGF0ZTxGdW5jdGlvblBvaW50ZXIx
IGZwPgpzdGF0aWMgYm9vbCBmb28oKQp7CiAgICByZXR1cm4gZnAoMSk7Cn0KCnRlbXBsYXRlPEZ1
bmN0aW9uUG9pbnRlcjIgZnA+CnN0YXRpYyBib29sIGZvbygpCnsKICAgIHJldHVybiBmcCgxLCAx
KTsKfQoKCmludCBtYWluKGludCBhcmdjLCBjaGFyIGNvbnN0KiBhcmd2W10pCnsKICAgIHByaW50
ZigiVmFsdWUgJXNcbiIsIGZvbzxvbmVQYXJhbWV0ZXI+KCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
ICAgIHByaW50ZigiVmFsdWUgJXNcbiIsIGZvbzx0d29QYXJhbWV0ZXI+KCkgPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKCiAgICByZXR1cm4gMDsKfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425187</attachid>
            <date>2021-04-05 12:27:48 -0700</date>
            <delta_ts>2021-04-11 08:57:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222518-20210405122746.patch</filename>
            <type>text/plain</type>
            <size>120657</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTA1ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6
ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFj
Y2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJs
ZS5oOgorICAgICAgICBUdXJuIG9uIEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19G
T1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OLCBub3cgdGhhdCB3ZSBoYXZlIGl0IHVzaW5nIHNoYXJl
ZAorICAgICAgICBkZWxlZ2F0aW5nIHN5bnRoZXRpYyBhdHRyaWJ1dGVzLgorCiAyMDIxLTA0LTAy
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJs
ZSBQcmVmZXJQYWdlUmVuZGVyaW5nVXBkYXRlc05lYXI2MEZQU0VuYWJsZWQgYnkgZGVmYXVsdApJ
bmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3LDcg
QEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJU
SUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCi0jZGVmaW5lIEVOQUJMRV9BVFRSSUJVVEVf
QkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OIDAKKyNkZWZpbmUgRU5B
QkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04g
MQogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw2MSBAQAorMjAyMS0wNC0wNSAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5IHNp
emUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBh
Y2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmUtaW1wbGVtZW50IHByb3Bl
ciAobm90IHVzaW5nIG5hbWVkLWdldHRlcnMpIHN1cHBvcnQgZm9yIHRoZSBDU1NTdHlsZURlY2xh
cmF0aW9uIGJpbmRpbmdzCisgICAgICAgIHVzaW5nIGEgbmV3IERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUgZXh0ZW5kZWQgYXR0dHJpYnV0ZSB3aGljaCBhbGxvd3MgSURMIGF0dHJp
YnV0ZXMKKyAgICAgICAgdG8gc2hhcmUgYSBjdXN0b20gZ2V0dGVyIC8gc2V0dGVyIGltcGxlbWVu
dGF0aW9uIGFuZCBkZWxlZ2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbiB0byBpdC4gV2hlbgorICAg
ICAgICB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHksIHRoZSBzeW50aGV0aWMgYXR0cmlidXRlJ3Mg
aW1wbGVtZW50YXRpb24gaXMgcGFzc2VkIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eQorICAgICAgICBu
YW1lIHNvIGl0IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBpdC4KKworICAg
ICAgICBXZSB1c2UgdGhpcyBmb3IgQ1NTU3R5bGVEZWNsYXJhdGlvbiBieSBicmVha2luZyB0aGUg
aHVnZSBsaXN0IG9mIGdlbmVyYXRlZCBwcm9wZXJ0aWVzIGludG8KKyAgICAgICAgZm91ciBncm91
cHMsIGVhY2ggd2l0aCB0aGVpciBvd24gc3ludGhldGljIGF0dHJpYnV0ZS4gVGhlIGdyb3VwcyBh
cmUgYmFzZWQgb24gdGhlIGRpZmZlcmVudAorICAgICAgICB0cmFuc2Zvcm1hdGlvbiBydWxlcyBp
biB0aGUgc3BlYy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGU6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
RExBdHRyaWJ1dGU6OmdldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKToKKyAgICAgICAgKEdl
dEF0dHJpYnV0ZVNldHRlck5hbWUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgIChHZW5lcmF0ZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZURlZmluaXRpb24pOgor
ICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvbik6CisgICAgICAg
IChHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlclRyYW1wb2xpbmVEZWZpbml0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0
ZUF0dHJpYnV0ZVNldHRlclRyYW1wb2xpbmVEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRl
QXR0cmlidXRlU2V0dGVyRGVmaW5pdGlvbik6CisgICAgICAgIChNYWtlU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlKToKKyAgICAgICAgKENvbXB1dGVTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzKToK
KyAgICAgICAgKEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUu
aDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRh
bERlcGVuZGVuY2llcy5kZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RD
U1NQcm9wZXJ0eS5pZGw6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbDogQWRkZWQuCisgICAg
ICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9v
a3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlRGVjbGFyYXRpb246OnByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVG
b3JDYW1lbENhc2VkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVj
bGFyYXRpb246OnByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yV2Vi
S2l0Q2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6cHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnByb3BlcnR5
VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZSk6
CisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvbWFr
ZXByb3AucGw6CisKIDIwMjEtMDQtMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUGVuZGluZ0ltYWdlQml0bWFwIGdldHMgY3JlYXRlZCBvbiBhIHN0b3BwZWQg
c2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01BdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUF0dHJpYnV0ZS5oCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICsz
MiwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPgogY2xhc3MgSURMQXR0cmlidXRlIHsK
IHB1YmxpYzoKICAgICB1c2luZyBTZXR0ZXIgPSBib29sKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0NsYXNzJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICB1c2luZyBTZXR0ZXJQYXNzaW5nUHJvcGVydHlO
YW1lID0gYm9vbChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDbGFzcyYsIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHVzaW5nIFN0YXRpY1NldHRlciA9IGJvb2woSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CiAgICAgdXNpbmcgR2V0dGVyID0gSlNDOjpK
U1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJik7CisgICAgdXNpbmcgR2V0dGVy
UGFzc2luZ1Byb3BlcnR5TmFtZSA9IEpTQzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDbGFzcyYsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICB1c2luZyBTdGF0aWNHZXR0ZXIgPSBK
U0M6OkpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogICAgIAogICAgIHN0YXRpYyBKU0Ns
YXNzKiBjYXN0KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKQEAg
LTUzLDcgKzU1LDI0IEBAIHB1YmxpYzoKIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHNldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgSlNDOjpK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSkpKTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBG
SVhNRTogVGhpcyBjYW4gYmUgbWVyZ2VkIHdpdGggdGhlIG90aGVyIGBzZXRgIGlmIHdlIHJlcGxh
Y2UgdGhlIGV4cGxpY2l0IHNldHRlciBmdW5jdGlvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd2l0aCBh
IGdlbmVyaWMgbGFtYmRhLgorICAgIHRlbXBsYXRlPFNldHRlclBhc3NpbmdQcm9wZXJ0eU5hbWUg
c2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpUaHJvdz4KKyAgICBzdGF0aWMgYm9vbCBzZXQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisKKyAgICAgICAgYXV0
byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgaWYgY29uc3Rl
eHByIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3cpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dWTURPTUF0dHJpYnV0ZVNldHRlclR5cGVFcnJv
cigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRy
aWJ1dGVOYW1lKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHNldHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgSlNDOjpKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSwgYXR0cmlidXRlTmFtZSkpKTsKKyAgICB9CisKICAgICB0ZW1w
bGF0ZTxTdGF0aWNTZXR0ZXIgc2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRU
aHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgYm9vbCBz
ZXRTdGF0aWMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKQogICAgIHsKQEAgLTgzLDcgKzEwMiwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGdl
dHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCkpKSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgbWVyZ2VkIHdpdGggdGhlIG90
aGVyICdnZXQnIGlmIHdlIHJlcGxhY2UgdGhlIGV4cGxpY2l0IHNldHRlciBmdW5jdGlvbiB0ZW1w
bGF0ZSBwYXJhbWV0ZXIgd2l0aCBhIGdlbmVyaWMgbGFtYmRhLgorICAgIHRlbXBsYXRlPEdldHRl
clBhc3NpbmdQcm9wZXJ0eU5hbWUgZ2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91
bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KKyAgICBzdGF0aWMgSlND
OjpFbmNvZGVkSlNWYWx1ZSBnZXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lIGF0
dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKworICAgICAgICBp
ZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQpIHsKKyAgICAgICAgICAgIEFTU0VSVChjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSkpOworICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTQ2xh
c3MqPihKU0M6OkpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNDOjpKU1ZhbHVlOjplbmNvZGUoZ2V0dGVyKGxl
eGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBhdHRyaWJ1dGVOYW1lKSkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmplY3QpKSB7CisgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyA9PSBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3cpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU0M6OnRocm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIEpTQ2xhc3M6OmluZm8oKSwgYXR0cmlidXRlTmFtZSk7CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpSZWplY3RQcm9taXNlKQorICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgcmVqZWN0UHJvbWlzZVdpdGhHZXR0ZXJUeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDbGFzczo6aW5mbygpLCBhdHRyaWJ1dGVOYW1lKSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1Zh
bHVlOjplbmNvZGUoSlNDOjpqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6OmVuY29k
ZShnZXR0ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIGF0dHJpYnV0ZU5hbWUp
KSkpOworICAgICAgICB9CisgICAgfQorCiAgICAgdGVtcGxhdGU8U3RhdGljR2V0dGVyIGdldHRl
ciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvcjo6VGhyb3c+CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgZ2V0U3RhdGlj
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNzU0
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIHN1YiBHZW5lcmF0ZUludGVyZmFj
ZQogICAgIEFkZE1hcExpa2VBdHRyaWJ1dGVzQW5kT3BlcmF0aW9uSWZOZWVkZWQoJGludGVyZmFj
ZSk7CiAgICAgQWRkU2V0TGlrZUF0dHJpYnV0ZXNBbmRPcGVyYXRpb25JZk5lZWRlZCgkaW50ZXJm
YWNlKTsKICAgICBBZGRTdHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVkKCRpbnRlcmZhY2UpOwor
ICAgIEFkZFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXNJZk5lZWRlZCgkaW50ZXJmYWNlKTsKIAog
ICAgIGlmICgkaW50ZXJmYWNlLT5pc0NhbGxiYWNrKSB7CiAgICAgICAgICRvYmplY3QtPkdlbmVy
YXRlQ2FsbGJhY2tJbnRlcmZhY2VIZWFkZXIoJGludGVyZmFjZSwgJGVudW1lcmF0aW9ucywgJGRp
Y3Rpb25hcmllcyk7CkBAIC0xODQwLDYgKzE4NDEsNyBAQCBzdWIgR2V0QXR0cmlidXRlR2V0dGVy
TmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBf
OwogCisgICAgcmV0dXJuIEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
KSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlfTsKICAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAu
ICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRl
LT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICByZXR1cm4gJGNvZGVHZW5lcmF0
b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiBNYW5nbGVBdHRyaWJ1dGVPckZ1bmN0aW9uTmFt
ZSgkYXR0cmlidXRlLT5uYW1lKSAuICJDb25zdHJ1Y3RvciIgaWYgJGNvZGVHZW5lcmF0b3ItPklz
Q29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwpAQCAtMTg1MCw2ICsxODUyLDcgQEAg
c3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKIAorICAgIHJldHVybiBHZXRBdHRyaWJ1dGVTZXR0ZXJO
YW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsIEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CiAgICAgcmV0dXJuICJzZXQi
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpKSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmli
dXRlKTsKICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xh
c3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiBNYW5nbGVBdHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgk
YXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICByZXR1cm4gInNl
dCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuIE1hbmdsZUF0dHJp
YnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPm5hbWUpOwpAQCAtNDI4MCwyNCArNDI4Myw4
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgInN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKCR7Y29uc3RydWN0b3JHZXR0
ZXJ9KTtcbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChA
eyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IGlmIElzSlNCdWls
dGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotCi0gICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZ2V0
dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoJHtnZXR0ZXJ9KTtcbiIpOwotICAgICAgICAgICAgdW5sZXNzIChJ
c1JlYWRvbmx5KCRhdHRyaWJ1dGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlw
ZSgkYXR0cmlidXRlLT50eXBlKSkgewotICAgICAgICAgICAgICAgIG15ICRyZWFkV3JpdGVDb25k
aXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsbHlS
ZWFkV3JpdGV9OwotICAgICAgICAgICAgICAgIGlmICgkcmVhZFdyaXRlQ29uZGl0aW9uYWwpIHsK
LSAgICAgICAgICAgICAgICAgICAgbXkgJHJlYWRXcml0ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUo
JHJlYWRXcml0ZUNvbmRpdGlvbmFsKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIjaWYgJHtyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZ31cbiIpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVy
TmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKCR7
c2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRp
ZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFsOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
KyAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9fSwgQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfSkgeworICAgICAgICAgICAgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJBbmRTZXR0ZXJEZWNs
YXJhdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKQEAgLTQ4
NzYsNyArNDg2Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKLSAgICBmb3JlYWNoIG15ICRhdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmli
dXRlc319LCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyRGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJEZWZpbml0
aW9uKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwog
ICAgIH0KQEAgLTUyMDcsNyArNTE5NCw4IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJv
ZHlEZWZpbml0aW8KICAgICBteSBAc2lnbmF0dXJlQXJndW1lbnRzID0gKCk7CiAgICAgcHVzaChA
c2lnbmF0dXJlQXJndW1lbnRzLCAiSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qi
KTsKICAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICIke2NsYXNzTmFtZX0mIHRoaXNPYmpl
Y3QiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7Ci0gICAgCisgICAgcHVzaChAc2lnbmF0dXJl
QXJndW1lbnRzLCAiUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSIpIGlmICRjb2RlR2VuZXJhdG9y
LT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NhbGxXaXRofSwgIlByb3BlcnR5TmFtZSIpOworCiAgICAgbXkgJG5lZWRTZWN1cml0eUNo
ZWNrID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gJiYg
ISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX0gJiYg
ISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0
dGVyfTsKICAgICBteSAkaGFzQ3VzdG9tR2V0dGVyID0gSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1
dGUpOwogICAgIG15ICRpc0V2ZW50SGFuZGxlciA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWUgZXEg
IkV2ZW50SGFuZGxlciI7CkBAIC01MjY5LDEzICs1MjU3LDYgQEAgc3ViIEdlbmVyYXRlQXR0cmli
dXRlR2V0dGVyQm9keURlZmluaXRpbwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6
JHtjb25zdHJ1Y3RvckdldHRlcn0oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRo
aXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgIH0KLSAgICB9IGVsc2lmICgk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX0pIHsKLSAgICAgICAg
JGltcGxJbmNsdWRlc3siQ1NTUHJvcGVydHlOYW1lcy5oIn0gPSAxOwotICAgICAgICBteSAkcHJv
cGVydHlJRCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NTU1Byb3BlcnR5fTsK
LQotICAgICAgICBteSAkdG9KU0V4cHJlc3Npb24gPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVy
ZW5jZXMoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgImltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5JHtwcm9wZXJ0eUlEfSkiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCkiKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICgke3RvSlNFeHByZXNzaW9ufSkpO1xuIik7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NhY2hlZEF0dHJpYnV0ZX0pIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IHRoaXNPYmplY3QubV8iIC4gJGF0dHJpYnV0
ZS0+bmFtZSAuICIuZ2V0KCkpXG4iKTsKQEAgLTUzNDEsMTEgKzUzMjIsMzYgQEAgc3ViIEdlbmVy
YXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cblxuIik7CiB9CiAKK3N1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckFuZFNldHRlckRlY2xh
cmF0aW9uCit7CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSkgPSBAXzsKKworICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNl
LCAkYXR0cmlidXRlKTsKKyAgICByZXR1cm4gaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CisKKyAgICBteSAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmlu
ZygkYXR0cmlidXRlKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjaWYgJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICBteSAkZ2V0dGVyID0gR2V0
QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uigke2dldHRlcn0pO1xuIik7CisgICAgdW5sZXNzIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpIHx8
ICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKSkgewor
ICAgICAgICBteSAkcmVhZFdyaXRlQ29uZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbGx5UmVhZFdyaXRlfTsKKyAgICAgICAgaWYgKCRyZWFkV3Jp
dGVDb25kaXRpb25hbCkgeworICAgICAgICAgICAgbXkgJHJlYWRXcml0ZUNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmli
dXRlVmFsdWUoJHJlYWRXcml0ZUNvbmRpdGlvbmFsKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiNpZiAke3JlYWRXcml0ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIik7CisgICAgICAg
IH0KKyAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
InN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKCR7c2V0dGVyfSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkcmVhZFdyaXRlQ29uZGl0aW9u
YWw7CisgICAgfQorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOworfQorCiBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJEZWZpbml0aW9u
CiB7CiAgICAgbXkgKCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSkgPSBAXzsKIAogICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKTsKKyAgICByZXR1cm4gaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CiAKICAgICBteSAkYXR0cmlidXRl
R2V0dGVyTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7CiAgICAgbXkgJGF0dHJpYnV0ZUdldHRlckJvZHlOYW1lID0gJGF0dHJp
YnV0ZUdldHRlck5hbWUgLiAiR2V0dGVyIjsKQEAgLTUzNzAsNiArNTM3Niw3IEBAIHN1YiBHZW5l
cmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW8KICAgICBwdXNoKEBzaWduYXR1cmVBcmd1
bWVudHMsICJKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCIpOwogICAgIHB1c2go
QHNpZ25hdHVyZUFyZ3VtZW50cywgIiR7Y2xhc3NOYW1lfSYgdGhpc09iamVjdCIpIGlmICEkYXR0
cmlidXRlLT5pc1N0YXRpYzsKICAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICJKU1ZhbHVl
IHZhbHVlIik7CisgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5z
KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgIlByb3BlcnR5TmFt
ZSIpOwogCiAgICAgbXkgJG5lZWRTZWN1cml0eUNoZWNrID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyfTsKICAgICBteSAkaGFzQ3VzdG9tU2V0
dGVyID0gSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUpOwpAQCAtNTQxOSwyMSArNTQyNiw2IEBA
IHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKCZ0aGlzT2JqZWN0LCB2YWx1
ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGVuc3VyZVN0aWxsQWxp
dmVIZXJlKHZhbHVlKTtcblxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBy
ZXR1cm4gdHJ1ZTtcbiIpOwotICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NTU1Byb3BlcnR5fSkgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJDU1NQcm9wZXJ0
eU5hbWVzLmgifSA9IDE7Ci0KLSAgICAgICAgbXkgJHByb3BlcnR5SUQgPSAkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX07Ci0KLSAgICAgICAgbXkgJGV4Y2VwdGlv
blRocm93ZXIgPSBHZXRBdHRyaWJ1dGVFeGNlcHRpb25UaHJvd2VyKCRpbnRlcmZhY2UsICRhdHRy
aWJ1dGUpOwotICAgICAgICBteSAkdG9OYXRpdmVFeHByZXNzaW9uID0gSlNWYWx1ZVRvTmF0aXZl
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsfSwgIiZsZXhpY2FsR2xvYmFsT2JqZWN0IiwgImxleGljYWxH
bG9iYWxPYmplY3QiLCAidGhpc09iamVjdCIsICIqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSIs
ICRleGNlcHRpb25UaHJvd2VyKTsKLQotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpO1xuIik7Ci0gICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBhdXRvIG5hdGl2ZVZhbHVlID0gJHt0b05hdGl2ZUV4cHJlc3Npb259
O1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJv
cGVydHkke3Byb3BlcnR5SUR9LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSwgZmFsc2UpO1xuIik7Ci0g
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9KTtcbiIpOwotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICB9IGVsc2lmICgkaXNSZXBs
YWNlYWJsZSkgewogICAgICAgICBteSAkaWQgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gcHJvcGVydHku
XG4iKTsKQEAgLTU1MzksNyArNTUzMSw4IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckRl
ZmluaXRpb24KICAgICByZXR1cm4gaWYgSXNSZWFkb25seSgkYXR0cmlidXRlKTsKICAgICByZXR1
cm4gaWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUp
OwogICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAg
ICAKKyAgICByZXR1cm4gaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CisKICAgICBteSAkY29uZGl0aW9uYWwgPSAk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgaWYgKCRj
b25kaXRpb25hbCkgewogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVy
YXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0
aW9uYWwpOwpAQCAtNjAwMyw2ICs1OTk2LDEwIEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwg
IldvcmxkIikpIHsKICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAid29ybGRGb3JET01PYmpl
Y3QoJHt0aGlzUmVmZXJlbmNlfSkiKTsKICAgICB9CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5F
eHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIlByb3BlcnR5TmFtZSIpKSB7Cisg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiKTsKKyAgICAg
ICAgcHVzaChAY2FsbFdpdGhBcmdzLCAicHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkiKTsKKyAgICB9CiAKICAgICByZXR1cm4gQGNhbGxXaXRoQXJnczsKIH0KQEAgLTgwNDUs
NCArODA0Miw1NiBAQCBzdWIgR2VuZXJhdGVDdXN0b21FbGVtZW50UmVhY3Rpb25zU3RhY2tJCiAg
ICAgfQogfQogCitzdWIgTWFrZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICgk
bmFtZSwgJGJhc2VBdHRyaWJ1dGUpID0gQF87CisKKyAgICBteSAkc2hhcmVkQXR0cmlidXRlID0g
SURMQXR0cmlidXRlLT5uZXcoKTsKKyAgICAkc2hhcmVkQXR0cmlidXRlLT5uYW1lKCRuYW1lKTsK
KyAgICAkc2hhcmVkQXR0cmlidXRlLT50eXBlKElETFBhcnNlcjo6Y2xvbmVUeXBlKCRiYXNlQXR0
cmlidXRlLT50eXBlKSk7CisgICAgSURMUGFyc2VyOjpjb3B5RXh0ZW5kZWRBdHRyaWJ1dGVzKCRz
aGFyZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcywgJGJhc2VBdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcyk7CisKKyAgICAjIFJlcGxhY2UgIkRlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUiIGV4dGVuZGVkIGF0dHJpYnV0ZSB3aXRoICJJc1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSIgZXh0ZW5kZWQgYXR0cmlidXRlIHRvCisgICAgIyB0aGF0IHRoaXMgaXMgdGhlIHJl
YWwgc3ludGhlc2l6ZWQgYXR0cmlidXRlLgorICAgIGRlbGV0ZSAkc2hhcmVkQXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsK
KyAgICAkc2hhcmVkQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZX0gPSAxOworCisgICAgcmV0dXJuICRzaGFyZWRBdHRyaWJ1dGU7Cit9CisK
K3N1YiBBZGRTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzSWZOZWVkZWQKK3sKKyAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7CisKKyAgICAjIFVzZSBhIGZha2UgZXh0ZW5kZWQgYXR0cmlidXRlLCBT
eW50aGV0aWNJRExBdHRyaWJ1dGVzLCB0byBzdG9yZSB0aGUgbmV3IGF0dHJpYnV0ZXMKKyAgICBp
ZiAobm90IGV4aXN0cyAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTeW50aGV0aWNJ
RExBdHRyaWJ1dGVzfSkgeworICAgICAgICBteSAlc3ludGhldGljSURMQXR0cmlidXRlcyA9ICgg
KTsKKyAgICAgICAgbXkgQGF0dHJpYnV0ZXMgPSAoKTsKKyAgICAgICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZX0pIHsKKyAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OworICAg
ICAgICAgICAgICAgIGlmIChub3QgJHN5bnRoZXRpY0lETEF0dHJpYnV0ZXN7JG5hbWV9KSB7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICRzeW50aGV0aWNBdHRyaWJ1dGUgPSBNYWtlU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlKCRuYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICAgICAg
JHN5bnRoZXRpY0lETEF0dHJpYnV0ZXN7JG5hbWV9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAYXR0cmlidXRlcywgJHN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9ID0gXEBhdHRyaWJ1dGVzOworICAg
IH0KK30KKworc3ViIEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICgkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgZm9yZWFjaCBteSAkc3ludGhldGljQXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0
dHJpYnV0ZXN9fSkgeworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX0gZXEgJHN5bnRoZXRpY0F0dHJp
YnV0ZS0+bmFtZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gJHN5bnRoZXRpY0F0dHJpYnV0ZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdW5kZWY7Cit9CisKIDE7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbgkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCw2IEBACiAg
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9jdXN0b20tZWxlbWVudHMuaHRtbCNjZXJlYWN0aW9ucyIKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSwKLSAgICAgICAgIkNTU1Byb3BlcnR5IjogewotICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCi0gICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KLSAg
ICAgICAgfSwKICAgICAgICAgIkNhY2hlZEF0dHJpYnV0ZSI6IHsKICAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAgICAgICAgIH0sCkBAIC01Nyw3ICs1Myw3IEBA
CiAgICAgICAgIH0sCiAgICAgICAgICJDYWxsV2l0aCI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKLSAgICAgICAgICAgICJ2YWx1
ZXMiOiBbIkRvY3VtZW50IiwgIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Iiwg
Ikdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ciLCAiUmVzcG9uc2li
bGVEb2N1bWVudCIsICJXb3JsZCJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQi
LCAiRXhlY1N0YXRlIiwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiR2xvYmFsT2JqZWN0Iiwg
IkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyIsICJSZXNwb25zaWJsZURvY3VtZW50IiwgIldv
cmxkIiwgIlByb3BlcnR5TmFtZSJdLAogICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24i
OiB0cnVlCiAgICAgICAgIH0sCiAgICAgICAgICJDaGVja1NlY3VyaXR5IjogewpAQCAtMTU0LDYg
KzE1MCw5IEBACiAgICAgICAgICJEZWZhdWx0RGVmaW5lT3duUHJvcGVydHkiOiB7CiAgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAorICAgICAg
ICAiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSI6IHsKKyAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCisgICAgICAgIH0sCiAgICAgICAgICJEaXNh
YmxlZEJ5UXVpcmsiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZh
Y2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAiY29u
c3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIiLCAiaW5jbHVkZXMiXSwKICAgICAgICAgICAgICJ2
YWx1ZXMiOiBbIioiXSwKQEAgLTQ3NSw3ICs0NzQsNyBAQAogICAgICAgICB9LAogICAgICAgICAi
U2V0dGVyQ2FsbFdpdGgiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRy
aWJ1dGUiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0IiwgIkdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5k
b3ciXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0IiwgIkdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ci
LCAiUHJvcGVydHlOYW1lIl0sCiAgICAgICAgICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRy
dWUKICAgICAgICAgfSwKICAgICAgICAgIlNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZSI6
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVz
dEdsb2JhbENvbnN0cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2
aXNpb24gMjc1NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0Jp
bmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDYgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0
ZSBUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0cmli
dXRlIFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXI7Ci0gICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yIFRl
c3RDU1NQcm9wZXJ0eTsKICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciBU
ZXN0Q2FsbFRyYWNlcjsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0cmli
dXRlIFRlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVyZmFj
ZTsKICAgICBhdHRyaWJ1dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpAQCAtOSw2ICs4LDcgQEAg
cGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZTsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0Q29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OwogICAgIGF0dHJpYnV0
ZSBUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsOworICAgIGF0dHJpYnV0ZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOwogICAgIGF0dHJpYnV0ZSBUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciBUZXN0
RG9tYWluU2VjdXJpdHk7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IgVGVzdEV2ZW50Q29uc3RydWN0b3I7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudFRhcmdl
dENvbnN0cnVjdG9yIFRlc3RFdmVudFRhcmdldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNzU0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsOSArMjQsNiBAQCBXZWJET01UZXN0Q0VSZWFjdGlvbnMuaDogCiBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyLmg6IAogRE9NVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDog
CiBXZWJET01UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKLUpTVGVzdENTU1Byb3BlcnR5
Lmg6IAotRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAotV2ViRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAog
SlNUZXN0Q2FsbFRyYWNlci5oOiAKIERPTVRlc3RDYWxsVHJhY2VyLmg6IAogV2ViRE9NVGVzdENh
bGxUcmFjZXIuaDogCkBAIC03Niw2ICs3Myw5IEBAIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5oOiAKIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaDogCiBET01UZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5oOiAKIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsLmg6IAorSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oOiAK
K0RPTVRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmg6IAorV2ViRE9NVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaDogCiBKU1Rlc3REZXJpdmVkRGlj
dGlvbmFyeS5oOiAKIERPTVRlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIFdlYkRPTVRlc3REZXJp
dmVkRGljdGlvbmFyeS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShyZXZpc2lvbiAyNzU0NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnR5
LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi10eXBlZGVm
IFVTVlN0cmluZyBDU1NPTVN0cmluZzsKLQotWwotICAgIEV4cG9zZWQ9VGVzdEdsb2JhbE9iamVj
dAotXSBpbnRlcmZhY2UgVGVzdENTU1Byb3BlcnR5IHsKLSAgICBbQ0VSZWFjdGlvbnMsIENTU1By
b3BlcnR5PVByb3BlcnR5TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
Q1NTT01TdHJpbmcgcHJvcGVydHk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaWRsCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK3R5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOworCitbCisgICAgRXhwb3Nl
ZD1UZXN0R2xvYmFsT2JqZWN0CitdIGludGVyZmFjZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSB7CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlPXNoYXJlZEF0dHJpYnV0ZTEsIENhbGxXaXRoPVByb3BlcnR5TmFtZV0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHkxOwor
ICAgIFtDRVJlYWN0aW9ucywgRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFy
ZWRBdHRyaWJ1dGUxLCBDYWxsV2l0aD1Qcm9wZXJ0eU5hbWVdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIHByb3BlcnR5MjsKKyAgICBbQ0VSZWFjdGlvbnMs
IERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMSwgQ2Fs
bFdpdGg9UHJvcGVydHlOYW1lXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBD
U1NPTVN0cmluZyBwcm9wZXJ0eTM7CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlPXNoYXJlZEF0dHJpYnV0ZTIsIENhbGxXaXRoPVByb3BlcnR5TmFt
ZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVy
dHk0OworICAgIFtDRVJlYWN0aW9ucywgRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZT1zaGFyZWRBdHRyaWJ1dGUyLCBDYWxsV2l0aD1Qcm9wZXJ0eU5hbWVdIGF0dHJpYnV0ZSBbTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIHByb3BlcnR5NTsKK307CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyOTggKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNUZXN0Q1NTUHJvcGVydHkuaCIKLQotI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNp
bmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgotI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgotI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNp
dG9yTWFjcm9zLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEF0dHJpYnV0ZXMKLQotc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3Rvcik7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eSk7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0
eSk7Ci0KLWNsYXNzIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpT
Qzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNO
b25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENTU1By
b3BlcnR5UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0g
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENTU1Byb3Bl
cnR5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdENTU1Byb3BlcnR5UHJvdG90eXBlLCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6QmFz
ZSk7Ci0KLXVzaW5nIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDU1NQcm9wZXJ0eT47Ci0KLXRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eURP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdENTU1Byb3BlcnR5Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3RDU1NQcm9wZXJ0eSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19
Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDU1NQcm9wZXJ0eSIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q1NTUHJvcGVydHlET01Db25z
dHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDU1NQcm9wZXJ0eUNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInByb3BlcnR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KSB9IH0sCi19OwotCi1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RDU1NQcm9wZXJ0
eSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUpIH07Ci0KLXZvaWQgSlNUZXN0Q1NTUHJvcGVydHlQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RDU1NQcm9wZXJ0
eTo6aW5mbygpLCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
Ci0gICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Ci19Ci0KLWNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9wZXJ0eTo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RDU1NQcm9wZXJ0eSkgfTsKLQotSlNUZXN0Q1NTUHJvcGVydHk6OkpTVGVzdENTU1Byb3Bl
cnR5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdENT
U1Byb3BlcnR5PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0K
LQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVj
dCwgVGVzdENTU1Byb3BlcnR5Pjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBb
QWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFz
c2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQotfQotCi1KU09iamVjdCogSlNUZXN0Q1NTUHJvcGVy
dHk6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpjcmVhdGUodm0s
ICZnbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwot
fQotCi1KU09iamVjdCogSlNUZXN0Q1NTUHJvcGVydHk6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlw
ZTxKU1Rlc3RDU1NQcm9wZXJ0eT4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUgSlNU
ZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eTo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3RDU1NQcm9wZXJ0eSogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdENTU1Byb3BlcnR5Kj4oY2VsbCk7Ci0gICAgdGhpc09i
amVjdC0+SlNUZXN0Q1NTUHJvcGVydHk6On5KU1Rlc3RDU1NQcm9wZXJ0eSgpOwotfQotCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RDU1NQcm9wZXJ0eSogSURMQXR0cmlidXRlPEpTVGVzdENTU1By
b3BlcnR5Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENT
U1Byb3BlcnR5Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENT
U1Byb3BlcnR5Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9w
ZXJ0eUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q1NT
UHJvcGVydHkmIHRoaXNPYmplY3QpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVByb3BlcnR5TmFtZSkp
KSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9w
ZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdENTU1Byb3BlcnR5Pjo6Z2V0PGpzVGVzdENTU1Byb3BlcnR5X3By
b3BlcnR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eSYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGludm9r
ZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5SW50
ZXJuYWwoQ1NTUHJvcGVydHlQcm9wZXJ0eU5hbWUsIFdURk1vdmUobmF0aXZlVmFsdWUpLCBmYWxz
ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpzZXQ8c2V0SlNUZXN0Q1NTUHJvcGVy
dHlfcHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENT
U1Byb3BlcnR5OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwot
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkuZ2V0KCkpCi0gICAg
ICAgIHJldHVybiBzcGFjZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5PiB8fCAhSlNUZXN0Q1NT
UHJvcGVydHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHk+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJvcGVydHkpOwotICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7Ci0gICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKLSAgICB2b2lkICgqbXlWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxs
KiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNUZXN0Q1NTUHJvcGVydHk6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHM7Ci0gICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpK
U0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25z
dHJhaW50czsKLSAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFpbnQgIT0ganNDZWxsVmlzaXRP
dXRwdXRDb25zdHJhaW50KQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdT
X0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eTo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKLSAgICBh
bmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBl
ZCgpKTsKLSAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAg
ICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgQmFzZTo6YW5h
bHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwotfQotCi1ib29sIEpTVGVzdENTU1Byb3BlcnR5T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioq
IHJlYXNvbikKLXsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURfUEFSQU0o
dmlzaXRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIGF1dG8qIGpzVGVzdENT
U1Byb3BlcnR5ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDU1NQcm9w
ZXJ0eS0+d3JhcHBlZCgpLCBqc1Rlc3RDU1NQcm9wZXJ0eSk7Ci19Ci0KLSNpZiBFTkFCTEUoQklO
RElOR19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE1VGVzdENTU1Byb3BlcnR5RVtdOyB9
Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RD
U1NQcm9wZXJ0eT4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQot
ICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGlt
cGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIik7
Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3Jl
MTVUZXN0Q1NTUHJvcGVydHlFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRl
c3RDU1NQcm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQg
dGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGlu
dGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGlj
PFRlc3RDU1NQcm9wZXJ0eT46OnZhbHVlLCAiVGVzdENTU1Byb3BlcnR5IGlzIG5vdCBwb2x5bW9y
cGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhh
dmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gVGVzdENTU1Byb3BlcnR5IGhhcyBz
dWJjbGFzc2VzLiBJZiBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFz
c2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RDU1NQcm9wZXJ0
eSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0
aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRl
ZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVj
dGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0
Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDU1NQcm9wZXJ0eSYgaW1wbCkKLXsKLSAg
ICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwot
fQotCi1UZXN0Q1NTUHJvcGVydHkqIEpTVGVzdENTU1Byb3BlcnR5Ojp0b1dyYXBwZWQoSlNDOjpW
TSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3Bl
cnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oCShub25leGlz
dGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIlRlc3RDU1NQcm9w
ZXJ0eS5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEpTVGVzdENTU1Byb3BlcnR5IDogcHVibGljIEpTRE9NV3JhcHBlcjxU
ZXN0Q1NTUHJvcGVydHk+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVy
PFRlc3RDU1NQcm9wZXJ0eT47Ci0gICAgc3RhdGljIEpTVGVzdENTU1Byb3BlcnR5KiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNUZXN0Q1NT
UHJvcGVydHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NT
UHJvcGVydHk+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q1NTUHJvcGVydHkoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLSAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICByZXR1cm4gcHRyOwotICAg
IH0KLQotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYs
IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlw
ZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdENTU1Byb3Bl
cnR5KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAg
aWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKLXByb3RlY3RlZDoKLSAgICBKU1Rlc3RDU1NQcm9wZXJ0eShK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4m
Jik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0KLWNsYXNzIEpT
VGVzdENTU1Byb3BlcnR5T3duZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIg
ewotcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9y
JiwgY29uc3QgY2hhcioqKSBmaW5hbDsKLSAgICB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIGZpbmFsOwotfTsKLQotaW5saW5lIEpTQzo6V2Vh
a0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdENTU1Byb3Bl
cnR5KikKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0Q1NTUHJvcGVydHlPd25l
cj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdy
YXBwZXJLZXkoVGVzdENTU1Byb3BlcnR5KiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJu
IHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdENTU1Byb3BlcnR5Jik7Ci1pbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENTU1Byb3BlcnR5KiBpbXBsKSB7
IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICpp
bXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0Q1NTUHJvcGVy
dHk+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZlB0cjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRv
SlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJl
bGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBK
U0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdENTU1Byb3BlcnR5PiB7Ci0gICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNUZXN0Q1NTUHJvcGVydHk7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0
dXJuVHlwZSA9IFRlc3RDU1NQcm9wZXJ0eSo7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzNSBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBBdHRyaWJ1dGVzCisKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVfc2hhcmVkQXR0cmlidXRlMik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0
ZTIpOworCitjbGFzcyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlPjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAg
IFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3Rv
dHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlRE9NQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAicHJvcGVydHkxIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpIH0gfSwKKyAgICB7ICJw
cm9wZXJ0eTIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0
cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVk
QXR0cmlidXRlMSkgfSB9LAorICAgIHsgInByb3BlcnR5MyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSB9IH0sCisgICAgeyAicHJvcGVy
dHk0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0
ZTIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJp
YnV0ZTIpIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMikgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlOjppbmZvKCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRf
VFJBTlNJVElPTigpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZTo6c19pbmZvID0geyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpIH07
CisKK0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OkpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZT4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBzdGF0aWNf
YXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3Vi
Y2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2Jh
bE9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0
UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1
ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4oY2VsbCk7CisgICAg
dGhpc09iamVjdC0+SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6fkpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoKTsKK30KKwordGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogSURMQXR0
cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJv
dG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zaGFyZWRB
dHRyaWJ1dGUxKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKSkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1
dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpnZXQ8anNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1l
KTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0
b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIGludm9rZUZ1bmN0b3JQcm9w
YWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFNoYXJlZEF0dHJpYnV0ZTEocHJvcGVy
dHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSksIFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmli
dXRlMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0
dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnNldDxzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTFTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlX3NoYXJlZEF0dHJpYnV0ZTJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxU
b0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLnNoYXJlZEF0dHJpYnV0ZTIocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5n
KHByb3BlcnR5TmFtZSkpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyLCAoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OmdldDxqc1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTJHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CisgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0
U2hhcmVkQXR0cmlidXRlMihwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPjo6c2V0PHNl
dEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRl
MlNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQorewor
ICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwor
ICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHx8ICFKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAg
ICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmpl
Y3QsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
ID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0u
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKKyAg
ICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hh
YmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIp
CisgICAgdm9pZCAoKm15VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6
U2xvdFZpc2l0b3ImKSA9IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0Q29u
c3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2VsbDo6
dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFpbnQg
IT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KQorICAgICAgICBjbGllbnREYXRhLm91dHB1
dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAor
SUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjphbmFseXplSGVhcChKU0NlbGwqIGNl
bGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4oY2VsbCk7Cisg
ICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndy
YXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmpl
Y3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6
OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90Vmlz
aXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVTRURfUEFSQU0o
aGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJl
YXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Cisg
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLT53cmFwcGVkKCksIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JN
KFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVy
biB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIg
eyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTM4VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+JiYgaW1w
bCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBh
Y3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQ
TEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlm
aWVyKCI/P183VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVAV2ViQ29yZUBA
NkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdX
ZWJDb3JlMzhUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUVbMl07CisjZW5k
aWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQor
ICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZh
Y2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnZhbHVlLCAiVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAv
LyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBm
cmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1
cnJlbnRseSByZXF1aXJlIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIHlv
dSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBT
a2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5p
dGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRW
VGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1w
bCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZTo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUp
Cit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4g
JndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNET01XcmFwcGVyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
PjsKKyAgICBzdGF0aWMgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSog
Y3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJiBp
bXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgewor
ICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3Vy
cmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJz
cGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChK
U0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAgIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJik7
CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lciBmaW5hbCA6IHB1YmxpYyBK
U0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6
OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopIGZpbmFsOworICAgIHZvaWQgZmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7Cit9
OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVy
V29ybGQmLCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSopCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5l
IHZvaWQqIHdyYXBwZXJLZXkoVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUq
IHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
LCBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYpOworaW5saW5lIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJik7Citpbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRy
PFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYmIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxhdGU8
PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1
cm5UeXBlID0gVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEs
MTMgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVzdENF
UmVhY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oIgot
I2luY2x1ZGUgIkpTVGVzdENTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2FsbFRyYWNl
ci5oIgogI2luY2x1ZGUgIkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNUZXN0RE9NSklULmgiCiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNPTklu
ZGlyZWN0SW5oZXJpdGFuY2UuaCIKICNpbmNsdWRlICJKU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJp
dC5oIgogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaCIKKyNpbmNs
dWRlICJKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiSlNUZXN0RG9tYWluU2VjdXJpdHkuaCIKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRUYXJnZXQuaCIKQEAgLTE2Nyw3ICsxNjcsNiBA
QCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1RlCiAjZW5kaWYKIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFj
dGlvbnNDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7Ci1z
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENT
U1Byb3BlcnR5Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpOwogI2lmIEVOQUJM
RShURVNUX0NPTkRJVElPTkFMKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yKTsKQEAgLTE3
Nyw2ICsxNzYsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHCiBz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpz
VGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9y
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9U
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9tYWlu
U2VjdXJpdHlDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50
VGFyZ2V0Q29uc3RydWN0b3IpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHVzaW5nIEpTVGVzdEdsb2Jh
bE9iamVjdERPTUNvbnN0cnVjdG9yID0KIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsy
NjhdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2Jh
bE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAyNjcgfSwKKyAgICB7IDY1LCAtMSB9LAogICAg
IHsgMTMsIDI2MCB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI5MSw3
ICsyOTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IDM4LCAtMSB9LAogICAgIHsgMTksIDI1NyB9LAotICAgIHsgNywg
LTEgfSwKKyAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQ1LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgNiwgLTEgfSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMzEsNyArMzMxLDcg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTAsIDI1NiB9LAor
ICAgIHsgOSwgMjU2IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDU3LCAtMSB9LAogICAgIHsg
MTgsIC0xIH0sCkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgMTEsIC0xIH0sCisgICAgeyAxMCwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQzOCw3ICs0MzgsNyBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAgICB7
IDEyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDEyLCAtMSB9LAorICAgIHsgMTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjMsMTMgKzQ2MywxMyBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDksIC0xIH0sCisgICAgeyA4LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0OCwgMjYzIH0sCi0gICAgeyA4LCAyNjIgfSwKKyAgICB7
IDcsIDI2MiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtNTA2LDcgKzUwNiw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1QKICAgICB7IDU0LCAtMSB9LAogICAgIHsgNjAsIC0xIH0sCiAgICAgeyA2NCwgLTEg
fSwKLSAgICB7IDY1LCAtMSB9LAogfTsKIAogCkBAIC01MjEsNyArNTIwLDYgQEAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogI2VuZGlmCiAgICAgeyAiVGVzdENFUmVh
Y3Rpb25zIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAotICAgIHsgIlRlc3RDU1NQcm9wZXJ0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RDYWxsVHJh
Y2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKICAgICB7ICJUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRl
cmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTUzMyw2ICs1MzEsNyBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdERlZmF1bHRUb0pTT05JbmRp
cmVjdEluaGVyaXRhbmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRU
b0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdERl
ZmF1bHRUb0pTT05Jbmhlcml0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdERlZmF1bHRUb0pT
T05Jbmhlcml0RmluYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAg
ICB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RXZlbnRDb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEV2ZW50VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCkBAIC04ODksMTcg
Kzg4OCw2IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmoKICAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxP
YmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0
b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2Jh
bE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOwotfQotCi1KU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0
cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2Jq
ZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTk4MCw2
ICs5NjgsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iagogICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2Jh
bE9iamVjdF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yR2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAorc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAg
VU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFt
ZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8
anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
Q29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJp
YnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
X1Rlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gMjc1NDUwKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0yNzEsNiArMjcyLDExNiBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQorCisjZWxzZQorCitlbnVtIGNsYXNzIENTU1By
b3BlcnR5TG9va3VwTW9kZSB7IENvbnZlcnRVc2luZ0Rhc2hQcmVmaXgsIENvbnZlcnRVc2luZ05v
RGFzaFByZWZpeCwgTm9Db252ZXJzaW9uIH07CisKK3RlbXBsYXRlPENTU1Byb3BlcnR5TG9va3Vw
TW9kZSBtb2RlPiBzdGF0aWMgQ1NTUHJvcGVydHlJRCBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPEF0b21TdHJpbmcsIENTU1Byb3BlcnR5SUQ+PiBjYWNoZTsKKwor
ICAgIGlmIChhdXRvIGlkID0gY2FjaGUuZ2V0KCkuZ2V0KGF0dHJpYnV0ZSkpCisgICAgICAgIHJl
dHVybiBpZDsKKworICAgIGNoYXIgb3V0cHV0QnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxlbmd0
aCArIDFdOworICAgIGNoYXIqIG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRCdWZmZXI7Cisg
ICAgY29uc3QgY2hhciogb3V0cHV0QnVmZmVyU3RhcnQgPSBvdXRwdXRCdWZmZXJDdXJyZW50Owor
CisgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29udmVy
dFVzaW5nRGFzaFByZWZpeCB8fCBtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29udmVy
dFVzaW5nTm9EYXNoUHJlZml4KSB7CisgICAgICAgIC8vIENvbnZlcnNpb24gaXMgaW1wbGVtZW50
aW5nIHRoZSAiSURMIGF0dHJpYnV0ZSB0byBDU1MgcHJvcGVydHkgYWxnb3JpdGhtIgorICAgICAg
ICAvLyBmcm9tIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jaWRsLWF0dHJpYnV0ZS10
by1jc3MtcHJvcGVydHkuCisKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1Byb3Bl
cnR5TG9va3VwTW9kZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeCkKKyAgICAgICAgICAgICpvdXRw
dXRCdWZmZXJDdXJyZW50KysgPSAnLSc7CisKKyAgICAgICAgcmVhZENoYXJhY3RlcnNGb3JQYXJz
aW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8gYnVmZmVyKSB7CisgICAgICAgICAgICB3aGlsZSAoYnVm
ZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gYyA9
ICpidWZmZXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzQVNDSUko
YyksICJJbnZhbGlkIHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9ICctJzsKKyAgICAgICAgICAg
ICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9IHRvQVNDSUlMb3dlclVuY2hlY2tlZChj
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKm91dHB1dEJ1
ZmZlckN1cnJlbnQrKyA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAq
b3V0cHV0QnVmZmVyQ3VycmVudCA9ICdcMCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVhZENo
YXJhY3RlcnNGb3JQYXJzaW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8gYnVmZmVyKSB7CisgICAgICAg
ICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgeworICAgICAgICAg
ICAgICAgIGF1dG8gYyA9ICpidWZmZXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGMgPT0gJy0nIHx8IGlzQVNDSUlMb3dlcihjKSwgIkludmFsaWQgcHJvcGVydHkgbmFt
ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0p
OworICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCA9ICdcMCc7CisgICAgfQorCisgICAgYXV0
byBoYXNoVGFibGVFbnRyeSA9IGZpbmRQcm9wZXJ0eShvdXRwdXRCdWZmZXJTdGFydCwgb3V0cHV0
QnVmZmVyQ3VycmVudCAtIG91dHB1dEJ1ZmZlcik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSho
YXNoVGFibGVFbnRyeSwgIkludmFsaWQgcHJvcGVydHkgbmFtZTogJXMiLCBhdHRyaWJ1dGUuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvIGlkID0gc3RhdGljX2Nhc3Q8Q1NTUHJv
cGVydHlJRD4oaGFzaFRhYmxlRW50cnktPmlkKTsKKyAgICBjYWNoZS5nZXQoKS5hZGQoYXR0cmli
dXRlLCBpZCk7CisgICAgcmV0dXJuIGlkOworfQorCitTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6cHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmlu
ZyYgYXR0cmlidXRlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5
RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ05vRGFz
aFByZWZpeD4oYXR0cmlidXRlKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQg
IT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxpZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRl
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwocHJvcGVydHlJRCk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlRGVjbGFy
YXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0
b21TdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBhdXRvIHBy
b3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGU8Q1NTUHJvcGVydHlM
b29rdXBNb2RlOjpDb252ZXJ0VXNpbmdOb0Rhc2hQcmVmaXg+KGF0dHJpYnV0ZSk7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkludmFs
aWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICByZXR1cm4gc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCB2YWx1ZSwgZmFsc2UpOwor
fQorCitTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvcldlYktpdENh
c2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSkKK3sKKyAgICBhdXRv
IHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGU8Q1NTUHJvcGVy
dHlMb29rdXBNb2RlOjpDb252ZXJ0VXNpbmdEYXNoUHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZh
bGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKK30KKworRXhj
ZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvcldl
YktpdENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0
eUZyb21JRExBdHRyaWJ1dGU8Q1NTUHJvcGVydHlMb29rdXBNb2RlOjpDb252ZXJ0VXNpbmdEYXNo
UHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAh
PSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHNldFByb3BlcnR5SW50ZXJuYWwo
cHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30KKworU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRp
b246OnByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYg
YXR0cmlidXRlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJv
bUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6Ok5vQ29udmVyc2lvbj4oYXR0cmli
dXRlKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJ
bnZhbGlkLCAiSW52YWxpZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwocHJvcGVydHlJ
RCk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRl
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENT
U1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6Ok5vQ29udmVy
c2lvbj4oYXR0cmlidXRlKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQgIT0g
Q1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxpZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRlLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHBy
b3BlcnR5SUQsIHZhbHVlLCBmYWxzZSk7Cit9CisKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9u
Ojpwcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcm
IGF0dHJpYnV0ZSkKK3sKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZy
b21JRExBdHRyaWJ1dGU8Q1NTUHJvcGVydHlMb29rdXBNb2RlOjpDb252ZXJ0VXNpbmdEYXNoUHJl
Zml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBD
U1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChwcm9wZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6c2V0UHJvcGVydHlWYWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3Ry
aW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgYXV0byBwcm9wZXJ0
eUlEID0gbG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3Vw
TW9kZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeD4oYXR0cmlidXRlKTsKKyAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxpZCBhdHRy
aWJ1dGU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVy
biBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxzZSk7Cit9CisKICNl
bmRpZgogCiBTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3NzRmxvYXQoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZpc2lvbiAyNzU0NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw2ICs3OSwyNiBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8VmFyaWFudDxTdHJpbmcs
IGRvdWJsZT4+IG5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0TmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFN0cmluZyB2YWx1ZSwg
Ym9vbCYgcHJvcGVydHlTdXBwb3J0ZWQpOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0
ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CisjZWxzZQorICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBi
ZSBtb3JlIGVmZmljaWVudCwgYnkgdmlydHVlIG9mIGF2b2lkaW5nIHRoZSB0ZXh0IHRyYW5zZm9y
bWF0aW9uIGFuZCBoYXNoIGxvb2t1cCBjdXJyZW50bHkKKyAgICAvLyByZXF1aXJlZCBpbiB0aGUg
aW1wbGVtZW50YXRpb24sIGlmIHdlIGNvdWxkIGNvdWxkIHNtdWdnbGUgdGhlIENTU1Byb3BlcnR5
SUQgdGhyb3VnaCB0aGUgYmluZGluZ3MsIHBlcmhhcHMKKyAgICAvLyBieSBlbmNvZGluZyBpdCBp
bnRvIHRoZSBIYXNoVGFibGVWYWx1ZSBhbmQgdGhlbiBwYXNzaW5nIGl0IHRvZ2V0aGVyIHdpdGgg
dGhlIFByb3BlcnR5TmFtZS4KKworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxs
IHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2Rv
bS1jc3NzdHlsZWRlY2xhcmF0aW9uLWNhbWVsX2Nhc2VkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcg
cHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURM
QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFNo
YXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLXdlYmtpdF9j
YXNlZF9hdHRyaWJ1dGUuCisgICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElE
TEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
UHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxs
IHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2Rv
bS1jc3NzdHlsZWRlY2xhcmF0aW9uLWRhc2hlZF9hdHRyaWJ1dGUuCisgICAgU3RyaW5nIHByb3Bl
cnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gU2hhcmVkIGltcGxlbWVu
dGF0aW9uIGZvciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIG5vbi1zdGFuZGFyZCBFcHViLWNh
c2VkLgorICAgIFN0cmluZyBwcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNv
bnN0IEF0b21TdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eVZhbHVl
Rm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gcGFzcyBpbiBhIFNldHRp
bmdzJiB0byB3b3JrIGNvcnJlY3RseS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsNiBA
QAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAog
ICAgIEV4cG9zZWQ9V2luZG93LAotI2lmICFkZWZpbmVkKEVOQUJMRV9BVFRSSUJVVEVfQkFTRURf
UFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSB8fCAhRU5BQkxFX0FUVFJJQlVU
RV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04KLSAgICBEZWZhdWx0
RGVmaW5lT3duUHJvcGVydHkKLSNlbmRpZgogXSBpbnRlcmZhY2UgQ1NTU3R5bGVEZWNsYXJhdGlv
biB7CiAgICAgLy8gRklYTUU6IFRoZXNlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBzaG91bGQg
dXNlIENTU09NU3RyaW5nIG5vdCBET01TdHJpbmcuCiAKQEAgLTQ2LDEyICs0Myw0IEBACiAgICAg
RE9NU3RyaW5nPyBnZXRQcm9wZXJ0eVNob3J0aGFuZChvcHRpb25hbCBET01TdHJpbmcgcHJvcGVy
dHlOYW1lKTsKICAgICBib29sZWFuIGlzUHJvcGVydHlJbXBsaWNpdChvcHRpb25hbCBET01TdHJp
bmcgcHJvcGVydHlOYW1lKTsKICAgICBEZXByZWNhdGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlD
U1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKLQotI2lmICFkZWZpbmVkKEVOQUJMRV9B
VFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSB8fCAh
RU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJ
T04KLSAgICAvLyBVc2UgbmFtZWQgZ2V0dGVycy9zZXR0ZXJzIGZvciBhbGwgc3VwcG9ydCBDU1Mg
cHJvcGVydHkgbmFtZXMuIFRoZSBzcGVjIHNheXMKLSAgICAvLyB0aGVzZSBzaG91bGQgYmUgbm9y
bWFsIGF0dHJpYnV0ZXMsIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgY29tYmluYXRpb25zIHdpdGgK
LSAgICAvLyBwcmVmaXhlcyBmb3IgdGhpcyB0byBiZSBwcmFjdGljYWwgd2l0aCBjdXJyZW50IGNv
ZGUgZ2VuZXJhdGlvbi4KLSAgICBnZXR0ZXIgKERPTVN0cmluZyBvciBkb3VibGUpIChET01TdHJp
bmcgbmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9y
dGVkUHJvcGVydGllc10gc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlKTsKLSNlbmRpZgogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvbWFrZXByb3AucGwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9tYWtlcHJvcC5wbAkod29ya2luZyBjb3B5KQpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgZm9yZWFj
aCBteSAkbmFtZU9yQWxpYXMgKEBuYW1lc0FuZEFsaWFzZQogICAgIG15ICRuYW1lID0gJG5hbWVz
QW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5h
bWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRl
ZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15
IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZT1wcm9wZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZSIsICJDYWxsV2l0
aD1Qcm9wZXJ0eU5hbWUiKTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVu
YWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0dGluZ3NGbGFn
c3skbmFtZX07CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQXRS
dW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdzeyRuYW1lfTsK
ICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5kZWRBdHRyaWJ1
dGVWYWx1ZXMpOwpAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgZm9yZWFjaCBteSAkbmFtZU9yQWxpYXMg
KGdyZXAgeyAkXyA9fiAvXgogICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFtZXsk
bmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0FuZEFs
aWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9
ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0
ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1wcm9wZXJ0eVZh
bHVlRm9yV2ViS2l0Q2FzZWRJRExBdHRyaWJ1dGUiLCAiQ2FsbFdpdGg9UHJvcGVydHlOYW1lIik7
CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7
c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OwogICAgIHB1
c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVG
bGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CiAgICAgbXkgJGV4dGVuZGVk
QXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKQEAgLTE0
NzIsNyArMTQ3Miw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL1wK
ICAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVPckFsaWFzfTsKICAg
ICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1l
fX07CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNTU1Byb3BlcnR5PSR7
cHJvcGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkRlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0
dHJpYnV0ZSIsICJDYWxsV2l0aD1Qcm9wZXJ0eU5hbWUiKTsKICAgICBwdXNoKEBleHRlbmRlZEF0
dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0i
KSBpZiAkc2V0dGluZ3NGbGFnc3skbmFtZX07CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVW
YWx1ZXMsICJFbmFibGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVu
dGltZUZsYWdzeyRuYW1lfTsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAi
LCBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMpOwpAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgZm9yZWFj
aCBteSAkbmFtZU9yQWxpYXMgKGdyZXAgeyAkXyA9fiAvXgogICAgIG15ICRuYW1lID0gJG5hbWVz
QW5kQWxpYXNlc1RvTmFtZXskbmFtZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5h
bWVUb0lkeyRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRl
ZEF0dHJpYnV0ZVZhbHVlcyA9ICgiQ1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15
IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZT1wcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlIiwgIkNhbGxXaXRo
PVByb3BlcnR5TmFtZSIpOwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5h
YmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdz
eyRuYW1lfTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1
bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5hbWV9Owog
ICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0
ZVZhbHVlcyk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0wNC0wNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBh
bmQgYmluYXJ5IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlv
biBwcm9wZXJ0eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4
ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBmYXN0
L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9t
L2RvbUxpc3RFbnVtZXJhdGlvbi5odG1sOgorICAgICAgICBSZW1vdmUgZXhpc3RpbmcgdGVzdHMg
Zm9yIGl0ZXJhdGlvbiBvcmRlciwgd2hpY2ggaXMgbm90IHN0YW5kYXJkaXplZCwgYW5kIG5vdCBj
b25zaXN0ZW50IGFtb25nCisgICAgICAgIGJyb3dzZXJzLiBBZGRzIGEgbmV3IG9uZSB0aGF0IGNo
ZWNrcyBpbnZhcmlhbnRzIG9mIHRoZSA0IGdyb3VwaW5ncyBvZiBwcm9wZXJ0aWVzIHdoaWNoIHdl
IGN1cnJlbnRseQorICAgICAgICBleHBlY3QgdG8gaG9sZCwgYXQgbGVhc3QgaW4gb3VyIGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3Nz
dHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZGVzY3JpcHRvci1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXBy
b3BlcnRpZXMtZGVzY3JpcHRvci5odG1sOgorICAgICAgICBVcGRhdGUgbm93IHRoYXQgdGhlIHBy
b3BlcnRpZXMgYXJlIHByb3BlciBhdHRyaWJ1dGVzIG9uIHRoZSBwcm90b3R5cGUuCisKKyAgICAg
ICAgKiBqcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWw6CisgICAgICAg
IFN3aXRjaCB0byB1c2luZyBhIERPTVN0cmluZ0xpc3QgYXMgdGhlIG9iamVjdCB0aGF0IG92ZXJy
aWRlcyBwdXQsIHNpbmNlIENTU1N0eWxlRGVjbGFyYXRpb24gbm8gbG9uZ2VyIGRvZXMuCisKKyAg
ICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB0cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLmh0bWw6CisgICAgICAgIFJl
bW92ZSBPYmplY3Qua2V5cygpIGFzcGVjdCBvZiB0aGUgdGVzdCwgd2hpY2ggaXMgbm8gbG9uZ2Vy
IG1lYW5pbmdmdWwgc2luY2UgdGhlCisgICAgICAgIHByb3BlcnRpZXMgc2hvdWxkIG5vIGxvbmdl
ciBleGlzdCBpbiB0aGUgcmVzdWx0IHNldC4KKwogMjAyMS0wNC0wMiAgQW1pciBNYXJrIEpyICA8
YW1pcl9tYXJrQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hY09TIF0gbWVkaWEvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzL21hY29zLWlubGluZS1tZWRpYS1jb250cm9scy9tYWNvcy1pbmxpbmUtbWVk
aWEtZHJvcHBpbmctY29udHJvbHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTEsNyArMTEsMzIgQEAgUEFTUyAnV2Via2l0VHJhbnNmb3JtJyBpbiBkb2N1bWVudC5i
b2R5LgogUEFTUyAnYm9ndXMtcmFuZG9tLVN0cmluZycgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSBp
cyBmYWxzZQogUEFTUyAnY3NzVGV4dCcgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSBpcyB0cnVlCiBQ
QVNTICdnZXRQcm9wZXJ0eUNTU1ZhbHVlJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIGlzIHRydWUK
LVBBU1MgVGhlIENTUyBwcm9wZXJ0eSBvcmRlciBpcyBjb3JyZWN0CitQQVNTIGluaXRpYWxJbmRl
eE9mR3JvdXAyID4gaW5pdGlhbEluZGV4T2ZHcm91cDEgaXMgdHJ1ZQorUEFTUyBpbml0aWFsSW5k
ZXhPZkdyb3VwMyA+IGluaXRpYWxJbmRleE9mR3JvdXAyIGlzIHRydWUKK1BBU1MgaW5pdGlhbElu
ZGV4T2ZHcm91cDQgPiBpbml0aWFsSW5kZXhPZkdyb3VwMyBpcyB0cnVlCitQQVNTIGluaXRpYWxJ
bmRleE9mR3JvdXA1ID4gaW5pdGlhbEluZGV4T2ZHcm91cDQgaXMgdHJ1ZQorUEFTUyBpbml0aWFs
SW5kZXhPZkdyb3VwNiA+IGluaXRpYWxJbmRleE9mR3JvdXA1IGlzIHRydWUKK1BBU1MgZ3JvdXAx
IGlzIFsiMCIsICIxIiwgImNzc1RleHQiLCAibGVuZ3RoIiwgInBhcmVudFJ1bGUiLCAiY3NzRmxv
YXQiXQorUEFTUyBncm91cDIgaXMgZ3JvdXAyQ2xvbmUKK1BBU1MgZ3JvdXAyLnNvbWUocHJvcGVy
dHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgiV2Via2l0IikpIGlzIHRydWUKK1BBU1MgZ3JvdXAy
LnNvbWUocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgiRXB1YiIpKSBpcyB0cnVlCitQ
QVNTIGdyb3VwMi5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuaW5jbHVkZXMoIi0iKSkgaXMg
dHJ1ZQorUEFTUyBncm91cDMgaXMgZ3JvdXAzQ2xvbmUKK1BBU1MgZ3JvdXAzLmV2ZXJ5KHByb3Bl
cnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJXZWJraXQiKSkgaXMgdHJ1ZQorUEFTUyBncm91
cDMuZXZlcnkocHJvcGVydHkgPT4gIXByb3BlcnR5LnN0YXJ0c1dpdGgoIkVwdWIiKSkgaXMgdHJ1
ZQorUEFTUyBncm91cDMuZXZlcnkocHJvcGVydHkgPT4gIXByb3BlcnR5LmluY2x1ZGVzKCItIikp
IGlzIHRydWUKK1BBU1MgZ3JvdXAzLmV2ZXJ5KHByb3BlcnR5ID0+IHByb3BlcnR5LnN0YXJ0c1dp
dGgoIndlYmtpdCIpKSBpcyB0cnVlCitQQVNTIGdyb3VwNCBpcyBncm91cDRDbG9uZQorUEFTUyBn
cm91cDQuZXZlcnkocHJvcGVydHkgPT4gIXByb3BlcnR5LnN0YXJ0c1dpdGgoIldlYmtpdCIpKSBp
cyB0cnVlCitQQVNTIGdyb3VwNC5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0
aCgiRXB1YiIpKSBpcyB0cnVlCitQQVNTIGdyb3VwNC5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVy
dHkuc3RhcnRzV2l0aCgid2Via2l0IikpIGlzIHRydWUKK1BBU1MgZ3JvdXA0LmV2ZXJ5KHByb3Bl
cnR5ID0+IHByb3BlcnR5LmluY2x1ZGVzKCItIikpIGlzIHRydWUKK1BBU1MgZ3JvdXA1IGlzIGdy
b3VwNUNsb25lCitQQVNTIGdyb3VwNS5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRz
V2l0aCgiV2Via2l0IikpIGlzIHRydWUKK1BBU1MgZ3JvdXA1LmV2ZXJ5KHByb3BlcnR5ID0+ICFw
cm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikpIGlzIHRydWUKK1BBU1MgZ3JvdXA1LmV2ZXJ5KHBy
b3BlcnR5ID0+ICFwcm9wZXJ0eS5pbmNsdWRlcygiLSIpKSBpcyB0cnVlCitQQVNTIGdyb3VwNS5l
dmVyeShwcm9wZXJ0eSA9PiBwcm9wZXJ0eS5zdGFydHNXaXRoKCJlcHViIikpIGlzIHRydWUKK1BB
U1MgZ3JvdXA2IGlzIFsiaXRlbSIsICJnZXRQcm9wZXJ0eVZhbHVlIiwgImdldFByb3BlcnR5UHJp
b3JpdHkiLCAic2V0UHJvcGVydHkiLCAicmVtb3ZlUHJvcGVydHkiLCAiZ2V0UHJvcGVydHlTaG9y
dGhhbmQiLCAiaXNQcm9wZXJ0eUltcGxpY2l0IiwgImdldFByb3BlcnR5Q1NTVmFsdWUiXQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0
bWwJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1l
cmF0ZS1wcm9wZXJ0aWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsMTMgQEAKIDxo
ZWFkPgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0KLSAgICA8L3NjcmlwdD4KIDwv
aGVhZD4KIDxib2R5IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgYm9yZGVyLXRv
cC1jb2xvcjogZ3JlZW4iPgogICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3QgbWFr
ZXMgc3VyZSB0aGF0IENTU1N0eWxlRGVjbGFyYXRpb24gZW51bWVyYXRlcyBKYXZhU2NyaXB0IHBy
b3BlcnRpZXMgZm9yIGRlZmluZWQgYW5kIG5vbi1kZWZpbmVkIENTUyBwcm9wZXJ0aWVzLCBpbmRl
eGVkIHByb3BlcnRpZXMsIGFuZCBwcm9wZXJ0aWVzIGRlZmluZWQgb24gdGhlIHByb3RvdHlwZS4g
U2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0
NiI+QnVnIDIzOTQ2PC9hPi48L2Rpdj4KICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KICAg
ICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwogICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYm9k
eS5zdHlsZS5sZW5ndGgiLCAiMiIpOwogICAgICAgICBzaG91bGRCZVRydWUoIicwJyBpbiBkb2N1
bWVudC5ib2R5LnN0eWxlIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiJzEnIGluIGRvY3VtZW50
LmJvZHkuc3R5bGUiKTsKQEAgLTIzLDMzICsyMCw4NSBAQAogICAgICAgICBzaG91bGRCZUZhbHNl
KCInYm9ndXMtcmFuZG9tLVN0cmluZycgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSIpOwogICAgICAg
ICBzaG91bGRCZVRydWUoIidjc3NUZXh0JyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIik7CiAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiJ2dldFByb3BlcnR5Q1NTVmFsdWUnIGluIGRvY3VtZW50LmJvZHku
c3R5bGUiKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRlc3QgaW52YXJpYW50cyBvbiB0aGUgb3Jk
ZXIgb2YgdGhlIGVudW1lcmF0ZWQgcHJvcGVydGllcy4gVGhlc2UgYXJlIG5vdCBpbiB0aGUgc3Bl
YywgYnV0IHdlCisgICAgICAgIC8vIGN1cnJlbnRseSBleHBlY3QgdGhlbSB0byBob2xkLgorICAg
ICAgICAvLyAtIDYgZ3JvdXBpbmdzCisgICAgICAgIC8vLiAgLSAxc3QgZ3JvdXBpbmcgWzAsIDEs
IGNzc1RleHQsIGxlbmd0aCwgcGFyZW50UnVsZSwgY3NzRmxvYXRdCisgICAgICAgIC8vICAgLSAy
bmQgZ3JvdXBpbmcsIGNhbWVsIGNhc2UsIGFscGhhYmV0aWNhbCwgaW5jbHVkZXMgcHJvcGVydGll
cyB3aXRoICJXZWJraXQiIGFuZCAiRXB1YiIgCisgICAgICAgIC8vICAgICBwcmVmaXggd2l0aCBp
bml0aWFsIHVwcGVyY2FzZSBsZXR0ZXIsIG5vIGRhc2hlcyBhbnl3aGVyZSBpbiB0aGUgbmFtZQor
ICAgICAgICAvLyAgIC0gM25kIGdyb3VwaW5nLCB3ZWJraXQgY2FzZSwgYWxwaGFiZXRpY2FsLCBh
bGwgcHJvcGVydGllcyBwcmVmaXhlZCB3aXRoICJ3ZWJraXQiIHdpdGgKKyAgICAgICAgLy8gICAg
IGluaXRpYWwgbG93ZXJjYXNlIGxldHRlciAndycuCisgICAgICAgIC8vICAgLSA0dGggZ3JvdXBp
bmcsIGRhc2hlZCBjYXNlLCBhbHBoYWJldGljYWwsIGFsbCBwcm9wZXJ0aWVzIGhhdmUgYSBkYXNo
IGluIHRoZW0uCisgICAgICAgIC8vICAgLSA1dGggZ3JvdXBpbmcsIGVwdWIgY2FzZSwgYWxwaGFi
ZXRpY2FsLCBhbGwgcHJvcGVydGllcyBwcmVmaXhlZCB3aXRoICJlcHViIiB3aXRoIAorICAgICAg
ICAvLyAgICAgaW5pdGlhbCBsb3dlcmNhc2UgbGV0dGVyICdlJy4KKyAgICAgICAgLy8gICAtIDZ0
aCBncm91cGluZywgW2l0ZW0sIGdldFByb3BlcnR5VmFsdWUsIGdldFByb3BlcnR5UHJpb3JpdHks
IHNldFByb3BlcnR5LCByZW1vdmVQcm9wZXJ0eSwgCisgICAgICAgIC8vICAgICBnZXRQcm9wZXJ0
eVNob3J0aGFuZCwgaXNQcm9wZXJ0eUltcGxpY2l0LCBnZXRQcm9wZXJ0eUNTU1ZhbHVlXQorCisg
ICAgICAgIGxldCBwcm9wZXJ0aWVzID0gW107CisgICAgICAgIGZvciAobGV0IHAgaW4gZG9jdW1l
bnQuYm9keS5zdHlsZSkKKyAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChwKTsKKworICAgICAg
ICBsZXQgaW5pdGlhbEluZGV4T2ZHcm91cDEgPSAwOworICAgICAgICBsZXQgaW5pdGlhbEluZGV4
T2ZHcm91cDIgPSBwcm9wZXJ0aWVzLmZpbmRJbmRleChwcm9wZXJ0eSA9PiBwcm9wZXJ0eSA9PSAi
Y3NzRmxvYXQiKSArIDE7CisgICAgICAgIGxldCBpbml0aWFsSW5kZXhPZkdyb3VwMyA9IHByb3Bl
cnRpZXMuZmluZEluZGV4KHByb3BlcnR5ID0+IHByb3BlcnR5LnN0YXJ0c1dpdGgoIndlYmtpdCIp
KTsKKyAgICAgICAgbGV0IGluaXRpYWxJbmRleE9mR3JvdXA0ID0gcHJvcGVydGllcy5maW5kSW5k
ZXgocHJvcGVydHkgPT4gcHJvcGVydHkuaW5jbHVkZXMoIi0iKSk7CisgICAgICAgIGxldCBpbml0
aWFsSW5kZXhPZkdyb3VwNSA9IHByb3BlcnRpZXMuZmluZEluZGV4KHByb3BlcnR5ID0+IHByb3Bl
cnR5LnN0YXJ0c1dpdGgoImVwdWIiKSk7CisgICAgICAgIGxldCBpbml0aWFsSW5kZXhPZkdyb3Vw
NiA9IHByb3BlcnRpZXMuZmluZEluZGV4KHByb3BlcnR5ID0+IHByb3BlcnR5ID09ICJpdGVtIik7
CisKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpbml0aWFsSW5kZXhPZkdyb3VwMiA+IGluaXRpYWxJ
bmRleE9mR3JvdXAxIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5pdGlhbEluZGV4T2ZHcm91
cDMgPiBpbml0aWFsSW5kZXhPZkdyb3VwMiIpOworICAgICAgICBzaG91bGRCZVRydWUoImluaXRp
YWxJbmRleE9mR3JvdXA0ID4gaW5pdGlhbEluZGV4T2ZHcm91cDMiKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCJpbml0aWFsSW5kZXhPZkdyb3VwNSA+IGluaXRpYWxJbmRleE9mR3JvdXA0Iik7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5pdGlhbEluZGV4T2ZHcm91cDYgPiBpbml0aWFsSW5kZXhP
Zkdyb3VwNSIpOworCisgICAgICAgIGxldCBncm91cDEgPSBwcm9wZXJ0aWVzLnNsaWNlKGluaXRp
YWxJbmRleE9mR3JvdXAxLCBpbml0aWFsSW5kZXhPZkdyb3VwMik7CisgICAgICAgIGxldCBncm91
cDIgPSBwcm9wZXJ0aWVzLnNsaWNlKGluaXRpYWxJbmRleE9mR3JvdXAyLCBpbml0aWFsSW5kZXhP
Zkdyb3VwMyk7CisgICAgICAgIGxldCBncm91cDMgPSBwcm9wZXJ0aWVzLnNsaWNlKGluaXRpYWxJ
bmRleE9mR3JvdXAzLCBpbml0aWFsSW5kZXhPZkdyb3VwNCk7CisgICAgICAgIGxldCBncm91cDQg
PSBwcm9wZXJ0aWVzLnNsaWNlKGluaXRpYWxJbmRleE9mR3JvdXA0LCBpbml0aWFsSW5kZXhPZkdy
b3VwNSk7CisgICAgICAgIGxldCBncm91cDUgPSBwcm9wZXJ0aWVzLnNsaWNlKGluaXRpYWxJbmRl
eE9mR3JvdXA1LCBpbml0aWFsSW5kZXhPZkdyb3VwNik7CisgICAgICAgIGxldCBncm91cDYgPSBw
cm9wZXJ0aWVzLnNsaWNlKGluaXRpYWxJbmRleE9mR3JvdXA2KTsKKworICAgICAgICAvLyBHcm91
cCAxCisgICAgICAgIHNob3VsZEJlKGBncm91cDFgLCBgWyIwIiwgIjEiLCAiY3NzVGV4dCIsICJs
ZW5ndGgiLCAicGFyZW50UnVsZSIsICJjc3NGbG9hdCJdYCk7CisKKyAgICAgICAgLy8gR3JvdXAg
MiAtIENhbWVsIENhc2UKKyAgICAgICAgbGV0IGdyb3VwMkNsb25lID0gWy4uLmdyb3VwMl07Cisg
ICAgICAgIGdyb3VwMkNsb25lLnNvcnQoKTsKKyAgICAgICAgc2hvdWxkQmUoImdyb3VwMiIsICJn
cm91cDJDbG9uZSIpOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwMi5zb21lKHByb3BlcnR5
ID0+IHByb3BlcnR5LnN0YXJ0c1dpdGgoIldlYmtpdCIpKWApOworICAgICAgICBzaG91bGRCZVRy
dWUoYGdyb3VwMi5zb21lKHByb3BlcnR5ID0+IHByb3BlcnR5LnN0YXJ0c1dpdGgoIkVwdWIiKSlg
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDIuZXZlcnkocHJvcGVydHkgPT4gIXByb3Bl
cnR5LmluY2x1ZGVzKCItIikpYCk7CisKKyAgICAgICAgLy8gR3JvdXAgMyAtIFdlYktpdCBDYXNl
CisgICAgICAgIGxldCBncm91cDNDbG9uZSA9IFsuLi5ncm91cDNdOworICAgICAgICBncm91cDND
bG9uZS5zb3J0KCk7CisgICAgICAgIHNob3VsZEJlKCJncm91cDMiLCAiZ3JvdXAzQ2xvbmUiKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDMuZXZlcnkocHJvcGVydHkgPT4gIXByb3BlcnR5
LnN0YXJ0c1dpdGgoIldlYmtpdCIpKWApOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwMy5l
dmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgiRXB1YiIpKWApOworICAgICAg
ICBzaG91bGRCZVRydWUoYGdyb3VwMy5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuaW5jbHVk
ZXMoIi0iKSlgKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDMuZXZlcnkocHJvcGVydHkg
PT4gcHJvcGVydHkuc3RhcnRzV2l0aCgid2Via2l0IikpYCk7CisKKyAgICAgICAgLy8gR3JvdXAg
NCAtIERhc2hlZCBDYXNlCisgICAgICAgIGxldCBncm91cDRDbG9uZSA9IFsuLi5ncm91cDRdOwor
ICAgICAgICBncm91cDRDbG9uZS5zb3J0KCk7CisgICAgICAgIHNob3VsZEJlKCJncm91cDQiLCAi
Z3JvdXA0Q2xvbmUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDQuZXZlcnkocHJvcGVy
dHkgPT4gIXByb3BlcnR5LnN0YXJ0c1dpdGgoIldlYmtpdCIpKWApOworICAgICAgICBzaG91bGRC
ZVRydWUoYGdyb3VwNC5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgiRXB1
YiIpKWApOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwNC5ldmVyeShwcm9wZXJ0eSA9PiAh
cHJvcGVydHkuc3RhcnRzV2l0aCgid2Via2l0IikpYCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZShg
Z3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+IHByb3BlcnR5LmluY2x1ZGVzKCItIikpYCk7CisKKyAg
ICAgICAgLy8gR3JvdXAgNSAtIEVwdWIgQ2FzZQorICAgICAgICBsZXQgZ3JvdXA1Q2xvbmUgPSBb
Li4uZ3JvdXA1XTsKKyAgICAgICAgZ3JvdXA1Q2xvbmUuc29ydCgpOworICAgICAgICBzaG91bGRC
ZSgiZ3JvdXA1IiwgImdyb3VwNUNsb25lIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXA1
LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJXZWJraXQiKSlgKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDUuZXZlcnkocHJvcGVydHkgPT4gIXByb3BlcnR5LnN0
YXJ0c1dpdGgoIkVwdWIiKSlgKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDUuZXZlcnko
cHJvcGVydHkgPT4gIXByb3BlcnR5LmluY2x1ZGVzKCItIikpYCk7CisgICAgICAgIHNob3VsZEJl
VHJ1ZShgZ3JvdXA1LmV2ZXJ5KHByb3BlcnR5ID0+IHByb3BlcnR5LnN0YXJ0c1dpdGgoImVwdWIi
KSlgKTsKIAotICAgICAgICAvLyBUZXN0IENTUyBwcm9wZXJ0eSBvcmRlci4KLSAgICAgICAgdmFy
IHN0YXJ0ZWQ7Ci0gICAgICAgIHZhciBjc3NQcm9wZXJ0eUNvdW50ID0gMDsKLSAgICAgICAgdmFy
IHByZXZpb3VzOwotICAgICAgICB2YXIgc2VlbkZpbHRlcjsKLSAgICAgICAgZm9yICh2YXIgcCBp
biBkb2N1bWVudC5ib2R5LnN0eWxlKSB7Ci0gICAgICAgICAgICBpZiAocCA9PT0gImFsaWdubWVu
dEJhc2VsaW5lIikKLSAgICAgICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTsKLSAgICAgICAgICAg
IGlmICghc3RhcnRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlm
IChwID09PSAiZmlsdGVyIikKLSAgICAgICAgICAgICAgICBzZWVuRmlsdGVyID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGlmIChwcmV2aW91cyAmJiBwcmV2aW91cyA+PSBwKSB7Ci0gICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSW52YWxpZCBDU1MtbWFwcGVkIHByb3BlcnR5IG9yZGVyOiAnIiArIHAg
KyAiJyBhZnRlciAnIiArIHByZXZpb3VzICsgIiciKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgrK2Nzc1Byb3BlcnR5Q291bnQgPD0gNDAw
KQotICAgICAgICAgICAgICAgIHByZXZpb3VzID0gcDsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmIChzZWVuRmlsdGVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJUaGUgQ1NTIHByb3BlcnR5IG9yZGVyIGlzIGNvcnJlY3QiKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRoZSAnZmlsdGVyJyBwcm9w
ZXJ0eSB3YXMgbm90IGVudW1lcmF0ZWQiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICAvLyBHcm91cCA2CisgICAgICAgIHNob3VsZEJl
KGBncm91cDZgLCBgWyJpdGVtIiwgImdldFByb3BlcnR5VmFsdWUiLCAiZ2V0UHJvcGVydHlQcmlv
cml0eSIsICJzZXRQcm9wZXJ0eSIsICJyZW1vdmVQcm9wZXJ0eSIsICJnZXRQcm9wZXJ0eVNob3J0
aGFuZCIsICJpc1Byb3BlcnR5SW1wbGljaXQiLCAiZ2V0UHJvcGVydHlDU1NWYWx1ZSJdYCk7CiAg
ICAgPC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9t
TGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU0NTAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsNiBAQCBQQVNTIHJlc3VsdEFycmF5WzFdLml0
ZW0gaXMgY3NzUnVsZUxpc3QuCiBQQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzInCiBQQVNTIHJl
c3VsdEFycmF5WzJdLml0ZW0gaXMgY3NzUnVsZUxpc3QuaXRlbSgyKQogCi1bb2JqZWN0IENTU1N0
eWxlRGVjbGFyYXRpb25dCi1QQVNTIHJlc3VsdEFycmF5WzBdLmkgaXMgJzAnCi1QQVNTIHJlc3Vs
dEFycmF5WzBdLml0ZW0gaXMgY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDApCi1QQVNTIHJlc3Vs
dEFycmF5WzFdLmkgaXMgJzEnCi1QQVNTIHJlc3VsdEFycmF5WzFdLml0ZW0gaXMgY3NzU3R5bGVE
ZWNsYXJhdGlvbi5pdGVtKDEpCi1QQVNTIHJlc3VsdEFycmF5WzJdLmkgaXMgJzInCi1QQVNTIHJl
c3VsdEFycmF5WzJdLml0ZW0gaXMgY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDIpCi0KIFtvYmpl
Y3QgQ1NTVmFsdWVMaXN0XQogUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTAKIFBBU1MgcmVz
dWx0QXJyYXlbMF0uaSBpcyAnMCcKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RF
bnVtZXJhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxp
c3RFbnVtZXJhdGlvbi5odG1sCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9kb21MaXN0RW51bWVyYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDE3ICsx
NzcsNiBAQCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaXRlbSIsICJjc3NSdWxlCiBzaG91bGRC
ZSgicmVzdWx0QXJyYXlbMl0uaSIsICInMiciKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5p
dGVtIiwgImNzc1J1bGVMaXN0Lml0ZW0oMikiKTsKIAotLy8gQ1NTU3R5bGVEZWNsYXJhdGlvbgot
Ly9kZWJ1Zyhlc2NhcGVIVE1MKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScp
KSk7Ci12YXIgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzJdLmNz
c1J1bGVzWzBdLnN0eWxlOwotcmVzdWx0QXJyYXkgPSBpdGVyYXRlTGlzdChjc3NTdHlsZURlY2xh
cmF0aW9uKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVswXS5pIiwgIicwJyIpOwotc2hvdWxkQmUo
InJlc3VsdEFycmF5WzBdLml0ZW0iLCAiY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDApIik7Ci1z
aG91bGRCZSgicmVzdWx0QXJyYXlbMV0uaSIsICInMSciKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJh
eVsxXS5pdGVtIiwgImNzc1N0eWxlRGVjbGFyYXRpb24uaXRlbSgxKSIpOwotc2hvdWxkQmUoInJl
c3VsdEFycmF5WzJdLmkiLCAiJzInIik7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXlbMl0uaXRlbSIs
ICJjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMikiKTsKLQogLy8gQ1NTVmFsdWVMaXN0CiB2YXIg
Y3NzVmFsdWVMaXN0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ29sJylbMF0pLmdldFByb3BlcnR5Q1NTVmFsdWUoJ2JvcmRlci1zcGFjaW5n
Jyk7CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGNzc1ZhbHVlTGlzdCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24t
cHJvcGVydGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJv
cGVydGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9u
LXByb3BlcnRpZXMtZGVzY3JpcHRvci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMs
NyArMyw4IEBAIFRoaXMgdGVzdHMgdGhlIGRlc2NyaXB0b3Igb2YgQ1NTU3R5bGVEZWMKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGRlc2NyaXB0b3JbJ3dyaXRhYmxlJ10gaXMg
dHJ1ZQorUEFTUyBkZXNjcmlwdG9yWydnZXQnXSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgor
UEFTUyBkZXNjcmlwdG9yWydzZXQnXSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyBk
ZXNjcmlwdG9yWydlbnVtZXJhYmxlJ10gaXMgdHJ1ZQogUEFTUyBkZXNjcmlwdG9yWydjb25maWd1
cmFibGUnXSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRp
b24tcHJvcGVydGllcy1kZXNjcmlwdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vQ1NTU3R5bGVEZWNsYXJhdGlvbi9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRp
ZXMtZGVzY3JpcHRvci5odG1sCShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1k
ZXNjcmlwdG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw5IEBACiAgICAgPHNjcmlw
dD4KICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGRlc2NyaXB0b3Igb2YgQ1NT
U3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0aWVzLiIpOwogCi0gICAgICAgIHZhciBkZXNjcmlwdG9y
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihkb2N1bWVudC5ib2R5LnN0eWxlLCAn
Y29sb3InKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJkZXNjcmlwdG9yWyd3cml0YWJsZSddIik7
CisgICAgICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihkb2N1bWVudC5ib2R5LnN0eWxlLl9fcHJvdG9fXywgJ2NvbG9yJyk7CisgICAgICAgIHNob3Vs
ZEJlVHlwZSgiZGVzY3JpcHRvclsnZ2V0J10iLCAiRnVuY3Rpb24iKTsKKyAgICAgICAgc2hvdWxk
QmVUeXBlKCJkZXNjcmlwdG9yWydzZXQnXSIsICJGdW5jdGlvbiIpOwogICAgICAgICBzaG91bGRC
ZVRydWUoImRlc2NyaXB0b3JbJ2VudW1lcmFibGUnXSIpOwogICAgICAgICBzaG91bGRCZVRydWUo
ImRlc2NyaXB0b3JbJ2NvbmZpZ3VyYWJsZSddIik7CiAgICAgPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAyMS0wNC0wNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5IHNpemUgY29zdCBvZiBlbmFibGluZyBwcm9wZXIg
Q1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBhY2Nlc3MgYmVoYXZpb3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjUxOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFy
YXRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSB0ZXN0IHJlc3Vs
dCBub3cgdGhhdCBpdCBpcyBwYXNzaW5nLgorCiAyMDIxLTA0LTAyICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgW1JlcGxhY2VhYmxlXSBl
eHRlbmRlZCBhdHRyaWJ1dGUgZnJvbSBgZG9jdW1lbnQuYWxsYApJbmRleDogTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21wYXQvY3NzLXN0eWxlLWRlY2xhcmF0
aW9uLWFsaWFzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9jc3Mtc3R5bGUtZGVj
bGFyYXRpb24tYWxpYXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU0NTAp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9j
c3Mtc3R5bGUtZGVjbGFyYXRpb24tYWxpYXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEFsaWFzZXMgZW51bWVyYXRlZCBvbiBD
U1NTdHlsZURlY2xhcmF0aW9uIGFzc2VydF90cnVlOiBBbGlhcyB3ZWJraXRUcmFuc2Zvcm0gc2Vl
biBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBBbGlhc2VzIGVudW1lcmF0ZWQgb24gQ1NT
U3R5bGVEZWNsYXJhdGlvbgogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI3NTQ1MCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGll
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgQ1NT
IFRlc3Q6IENTU1N0eWxlRGVjbGFyYXRpb24gcHJvcGVydGllcyBhcmUgZGVmaW5lZCBhcyBXZWJJ
REwgYXR0cmlidXRlcywgbm90IHVzaW5nIGdldE93blByb3BlcnR5TmFtZXMoKSBhc3NlcnRfZmFs
c2U6IHNob3VsZG4ndCBoYXZlIGFuIG93biBwcm9wZXJ0eSBmb3IgV2ViSURMIGF0dHJpYnV0ZXMg
ZXhwZWN0ZWQgZmFsc2UgZ290IHRydWUKK1BBU1MgQ1NTIFRlc3Q6IENTU1N0eWxlRGVjbGFyYXRp
b24gcHJvcGVydGllcyBhcmUgZGVmaW5lZCBhcyBXZWJJREwgYXR0cmlidXRlcywgbm90IHVzaW5n
IGdldE93blByb3BlcnR5TmFtZXMoKQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92
ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvZG9tL3B1dC1vdmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy5odG1sCShyZXZpc2lvbiAyNzU0
NTApCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWlj
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsMTAgKzgsMTAgQEAKIDxzY3JpcHQ+CiAgICAgdGVz
dChmdW5jdGlvbigpIHsKICAgICAgICAgZnVuY3Rpb24gdHJhbnNpdGlvbmVkKCkgewotICAgICAg
ICAgICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykuc3R5bGU7CisgICAgICAg
ICAgICBkYXRhc2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpLmRhdGFzZXQ7CiAgICAg
ICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMjA7IGkrKykKLSAgICAgICAgICAgICAgICBzdHls
ZVsncCcraV0gPSBpOwotICAgICAgICAgICAgcmV0dXJuIHN0eWxlOworICAgICAgICAgICAgICAg
IGRhdGFzZXRbJ3AnK2ldID0gaTsKKyAgICAgICAgICAgIHJldHVybiBkYXRhc2V0OwogICAgICAg
ICB9CiAKICAgICAgICAgZnVuY3Rpb24gcHV0dGVyKG8pIHsKSW5kZXg6IExheW91dFRlc3RzL3Ry
YW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNzU0NTApCisrKyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9u
cy1wYXJzaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDYgQEAgT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogVmFsaWQgdHJhbnNpdGlvbi1w
cm9wZXJ0eSB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3BlcnR5IGlz
ICdhbGwnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvblByb3BlcnR5IGlzICdh
bGwnCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uUHJvcGVydHkn
KSBpcyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5z
aXRpb25Qcm9wZXJ0eScpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAn
bm9uZScKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgaXMgJ25vbmUnCiBQ
QVNTIHN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAnbm9uZScKQEAgLTEwMCw4ICs5
OCw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uUHJvcGUKIFZhbGlkIHRy
YW5zaXRpb24tZHVyYXRpb24gdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25E
dXJhdGlvbiBpcyAnMHMnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0
aW9uIGlzICcwcycKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25E
dXJhdGlvbicpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Vi
a2l0VHJhbnNpdGlvbkR1cmF0aW9uJykgaXMgLTEKIFBBU1Mgc3R5bGUudHJhbnNpdGlvbkR1cmF0
aW9uIGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gaXMgJzBz
JwogUEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwpAQCAtMTUwLDgg
KzE0Niw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXQKIFZhbGlk
IHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRTdHlsZS50
cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2Vhc2UnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Vi
a2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdlYXNlJwotUEFTUyBPYmplY3Qua2V5cyhz
dHlsZSkuaW5kZXhPZigndHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykgaXMgbm90IC0xCi1QQVNT
IE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rp
b24nKSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVh
cicKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVh
cicKIFBBU1Mgc3R5bGUud2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXIn
CkBAIC0zMDAsOCArMjk0LDYgQEAgUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25U
aW1pbgogVmFsaWQgdHJhbnNpdGlvbi1kZWxheSB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUu
dHJhbnNpdGlvbkRlbGF5IGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0
aW9uRGVsYXkgaXMgJzBzJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNp
dGlvbkRlbGF5JykgaXMgbm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3
ZWJraXRUcmFuc2l0aW9uRGVsYXknKSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uRGVsYXkg
aXMgJzBzJwogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSBpcyAnMHMnCiBQQVNT
IHN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheSBpcyAnMHMnCkBAIC0zNTAsOCArMzQyLDYgQEAg
UEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheQogVmFsaWQgdHJhbnNpdGlv
biBzaG9ydGhhbmQgdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb24gaXMgJ2Fs
bCAwcyBlYXNlIDBzJwogUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb24gaXMgJ2Fs
bCAwcyBlYXNlIDBzJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlv
bicpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJh
bnNpdGlvbicpIGlzIC0xCiBQQVNTIHN0eWxlLnRyYW5zaXRpb24gaXMgJ25vbmUnCiBQQVNTIGNv
bXB1dGVkU3R5bGUudHJhbnNpdGlvbiBpcyAnbm9uZSAwcyBlYXNlIDBzJwogUEFTUyBzdHlsZS53
ZWJraXRUcmFuc2l0aW9uIGlzICdub25lJwpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbnMtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5z
aXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gMjc1NDUwKQorKysgTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw4ICszMCw2IEBAIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25Q
cm9wZXIKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSIs
ICInYWxsJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgPSAibm9uZSI7Ci1zaG91bGRO
b3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25Qcm9wZXJ0eScpIiwg
Ii0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5z
aXRpb25Qcm9wZXJ0eScpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlvblByb3Bl
cnR5IiwgIidub25lJyIpOwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3Bl
cnR5IiwgIidub25lJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0
eSIsICInbm9uZSciKTsKQEAgLTE3Niw4ICsxNzQsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHls
ZS50cmFuc2l0aW9uRHVyYXRpCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0
aW9uRHVyYXRpb24iLCAiJzBzJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiMHMi
Owotc2hvdWxkTm90QmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uRHVy
YXRpb24nKSIsICItMSIpOwotc2hvdWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3
ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24nKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5z
aXRpb25EdXJhdGlvbiIsICInMHMnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0
aW9uRHVyYXRpb24iLCAiJzBzJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25E
dXJhdGlvbiIsICInMHMnIik7CkBAIC0yNTYsOCArMjUyLDYgQEAgc2hvdWxkQmUoImNvbXB1dGVk
U3R5bGUudHJhbnNpdGlvblRpbWluZwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUud2Via2l0VHJh
bnNpdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidlYXNlJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uVGlt
aW5nRnVuY3Rpb24gPSAibGluZWFyIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSku
aW5kZXhPZigndHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykiLCAiLTEiKTsKLXNob3VsZEJlKCJP
YmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
JykiLCAiLTEiKTsKIHNob3VsZEJlKCJzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCAi
J2xpbmVhciciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5j
dGlvbiIsICInbGluZWFyJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbiIsICInbGluZWFyJyIpOwpAQCAtNDg1LDggKzQ3OSw2IEBAIHNob3VsZEJlKCJj
b21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSIKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndl
YmtpdFRyYW5zaXRpb25EZWxheSIsICInMHMnIik7CiAKIHN0eWxlLnRyYW5zaXRpb25EZWxheSA9
ICIwcyI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRp
b25EZWxheScpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2Yo
J3dlYmtpdFRyYW5zaXRpb25EZWxheScpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNp
dGlvbkRlbGF5IiwgIicwcyciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25E
ZWxheSIsICInMHMnIik7CiBzaG91bGRCZSgic3R5bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5Iiwg
IicwcyciKTsKQEAgLTU2NSw4ICs1NTcsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFu
c2l0aW9uIiwgIidhCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uIiwg
IidhbGwgMHMgZWFzZSAwcyciKTsKIAogc3R5bGUudHJhbnNpdGlvbiA9ICJub25lIjsKLXNob3Vs
ZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvbicpIiwgIi0xIik7
Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb24n
KSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRpb24iLCAiJ25vbmUnIik7CiBzaG91
bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uIiwgIidub25lIDBzIGVhc2UgMHMnIik7CiBz
aG91bGRCZSgic3R5bGUud2Via2l0VHJhbnNpdGlvbiIsICInbm9uZSciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>425687</attachid>
            <date>2021-04-10 10:20:14 -0700</date>
            <delta_ts>2021-04-10 10:20:14 -0700</delta_ts>
            <desc>Test Case</desc>
            <filename>testCase.html</filename>
            <type>text/html</type>
            <size>532</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgPHN0eWxlPgogICAgICBkaXYjb3RoZXJFbGVtZW50IHsKICAgICAgICBmb250LXdl
aWdodDogYm9sZDsKICAgICAgfTsKICA8L3N0eWxlPgogIDxib2R5PgogICAgPGRpdiBpZD0ic3R5
bGVkRWxlbWVudCI+U3dlZXQgc3R5bGV6ITwvZGl2PgogICAgPGRpdiBpZD0ib3RoZXJFbGVtZW50
Ij5CbG9ja2VkIHN0eWxleiE8L2Rpdj4KICAgIDxwcmUgaWQ9ImxvZyI+PC9wcmU+CiAgICA8c2Ny
aXB0PgogICAgICAgIGxldCBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIik7CiAg
ICAgICAgbG9nLmFwcGVuZCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnc3R5bGVkRWxlbWVudCcpKVsnZm9udC13ZWlnaHQnXSArICJcbiIpOwogICAgICAg
IGxvZy5hcHBlbmQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ290aGVyRWxlbWVudCcpKVsnZm9udC13ZWlnaHQnXSArICJcbiIpOwogICAgPC9zY3JpcHQ+
CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425697</attachid>
            <date>2021-04-10 19:59:42 -0700</date>
            <delta_ts>2021-04-11 08:57:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222518-20210410195941.patch</filename>
            <type>text/plain</type>
            <size>123714</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU3OTkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTEwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6
ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFj
Y2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJs
ZS5oOgorICAgICAgICBUdXJuIG9uIEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19G
T1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OLCBub3cgdGhhdCB3ZSBoYXZlIGl0IHVzaW5nIHNoYXJl
ZAorICAgICAgICBkZWxlZ2F0aW5nIHN5bnRoZXRpYyBhdHRyaWJ1dGVzLgorCiAyMDIxLTA0LTA5
ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFdURiBTb2Z0TGlu
a2luZyBtYWNyb3MgY2FuIGNhdXNlIGNvbGxpc2lvbnMgd2l0aCB0aGVpciB0YXJnZXQgZnVuY3Rp
b25zCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNiwxMCAr
MzM2LDYgQEAKICNkZWZpbmUgRU5BQkxFX0xBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQgMAogI2Vu
ZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9S
X0NTU19TVFlMRV9ERUNMQVJBVElPTikKLSNkZWZpbmUgRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9Q
Uk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04gMAotI2VuZGlmCi0KICNpZiAhZGVm
aW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCiAjZGVmaW5lIEVOQUJMRV9MRVRURVJQUkVTUyAwCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTgwNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDIxLTA0LTEwICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0
aW1lIGFuZCBiaW5hcnkgc2l6ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xh
cmF0aW9uIHByb3BlcnR5IGFjY2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NTEzNjg4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBS
ZS1pbXBsZW1lbnQgcHJvcGVyIChub3QgdXNpbmcgbmFtZWQtZ2V0dGVycykgc3VwcG9ydCBmb3Ig
dGhlIENTU1N0eWxlRGVjbGFyYXRpb24gYmluZGluZ3MKKyAgICAgICAgdXNpbmcgYSBuZXcgRGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSBleHRlbmRlZCBhdHR0cmlidXRlIHdoaWNo
IGFsbG93cyBJREwgYXR0cmlidXRlcworICAgICAgICB0byBzaGFyZSBhIGN1c3RvbSBnZXR0ZXIg
LyBzZXR0ZXIgaW1wbGVtZW50YXRpb24gYW5kIGRlbGVnYXRlIHRoZWlyIGltcGxlbWVudGF0aW9u
IHRvIGl0LiBXaGVuCisgICAgICAgIHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSwgdGhlIHN5bnRo
ZXRpYyBhdHRyaWJ1dGUncyBpbXBsZW1lbnRhdGlvbiBpcyBwYXNzZWQgdGhlIG9yaWdpbmFsIHBy
b3BlcnR5CisgICAgICAgIG5hbWUgc28gaXQgY2FuIGltcGxlbWVudCBmdW5jdGlvbmFsaXR5IGJh
c2VkIG9uIGl0LgorCisgICAgICAgIFdlIHVzZSB0aGlzIGZvciBDU1NTdHlsZURlY2xhcmF0aW9u
IGJ5IGJyZWFraW5nIHRoZSBodWdlIGxpc3Qgb2YgZ2VuZXJhdGVkIHByb3BlcnRpZXMgaW50bwor
ICAgICAgICBmb3VyIGdyb3VwcywgZWFjaCB3aXRoIHRoZWlyIG93biBzeW50aGV0aWMgYXR0cmli
dXRlLiBUaGUgZ3JvdXBzIGFyZSBiYXNlZCBvbiB0aGUgZGlmZmVyZW50CisgICAgICAgIHRyYW5z
Zm9ybWF0aW9uIHJ1bGVzIGluIHRoZSBzcGVjLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01BdHRyaWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklETEF0dHJpYnV0ZTo6c2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklETEF0dHJpYnV0ZTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5h
bWUpOgorICAgICAgICAoR2V0QXR0cmlidXRlU2V0dGVyTmFtZSk6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlU2hhcmVkU3ludGhldGljQXR0cmli
dXRlRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZp
bml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyVHJhbXBvbGluZURlZmlu
aXRpb24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJBbmRTZXR0ZXJEZWNsYXJh
dGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyVHJhbXBvbGluZURlZmluaXRpb24pOgor
ICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJEZWZpbml0aW9uKToKKyAgICAgICAgKE1h
a2VTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgorICAgICAgICAoQ29tcHV0ZVNoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZXMpOgorICAgICAgICAoR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRs
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENT
U1Byb3BlcnR5Lmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnR5LmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckNhbWVsQ2Fz
ZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0UHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURM
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFBy
b3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFs
dWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNh
c2VkSURMQXR0cmlidXRlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oOgor
ICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKwogMjAyMS0wNC0xMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjI3NTY2OCkgUG90ZW50aWFs
IG51bGwgcG9pbnRlciBkZXJlZiBpbiBBdWRpb1BhcmFtOjpleHBvbmVudGlhbFJhbXBUb1ZhbHVl
QXRUaW1lKGZsb2F0LCBkb3VibGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUF0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQXR0cmlidXRlLmgJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDEw
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CiBjbGFzcyBJRExBdHRyaWJ1dGUgewogcHVi
bGljOgogICAgIHVzaW5nIFNldHRlciA9IGJvb2woSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xh
c3MmLCBKU0M6OkpTVmFsdWUpOworICAgIHVzaW5nIFNldHRlclBhc3NpbmdQcm9wZXJ0eU5hbWUg
PSBib29sKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiAgICAgdXNpbmcgU3RhdGljU2V0dGVyID0gYm9vbChKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKICAgICB1c2luZyBHZXR0ZXIgPSBKU0M6OkpTVmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQ2xhc3MmKTsKKyAgICB1c2luZyBHZXR0ZXJQYXNz
aW5nUHJvcGVydHlOYW1lID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0Ns
YXNzJiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHVzaW5nIFN0YXRpY0dldHRlciA9IEpTQzo6
SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAgICAgCiAgICAgc3RhdGljIEpTQ2xhc3Mq
IGNhc3QoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwpAQCAtNTMs
NyArNTUsMjQgQEAgcHVibGljOgogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAoc2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKSkpOwogICAgIH0KLSAgICAKKworICAgIC8vIEZJWE1F
OiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0aCB0aGUgb3RoZXIgYHNldGAgaWYgd2UgcmVwbGFjZSB0
aGUgZXhwbGljaXQgc2V0dGVyIGZ1bmN0aW9uIHRlbXBsYXRlIHBhcmFtZXRlciB3aXRoIGEgZ2Vu
ZXJpYyBsYW1iZGEuCisgICAgdGVtcGxhdGU8U2V0dGVyUGFzc2luZ1Byb3BlcnR5TmFtZSBzZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OlRocm93PgorICAgIHN0YXRpYyBib29sIHNldChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lIGF0dHJpYnV0
ZU5hbWUpCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKworICAgICAgICBhdXRvKiB0
aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOworICAgICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIg
KHNob3VsZFRocm93ID09IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlU2V0dGVyVHlwZUVycm9yKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0
ZU5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoc2V0
dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpLCBhdHRyaWJ1dGVOYW1lKSkpOworICAgIH0KKwogICAgIHRlbXBsYXRl
PFN0YXRpY1NldHRlciBzZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93
ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRpYyBib29sIHNldFN0
YXRpYyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpCiAgICAgewpAQCAtODMsNyArMTAyLDMyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNDOjpKU1ZhbHVlOjplbmNvZGUoZ2V0dGVy
KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0KSkpKTsKICAgICAgICAgfQogICAgIH0K
LSAgICAKKworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBtZXJnZWQgd2l0aCB0aGUgb3RoZXIg
J2dldCcgaWYgd2UgcmVwbGFjZSB0aGUgZXhwbGljaXQgc2V0dGVyIGZ1bmN0aW9uIHRlbXBsYXRl
IHBhcmFtZXRlciB3aXRoIGEgZ2VuZXJpYyBsYW1iZGEuCisgICAgdGVtcGxhdGU8R2V0dGVyUGFz
c2luZ1Byb3BlcnR5TmFtZSBnZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRo
cm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgorICAgIHN0YXRpYyBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGdldChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUgYXR0cmli
dXRlTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworCisgICAgICAgIGlmIGNv
bnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCkg
eworICAgICAgICAgICAgQVNTRVJUKGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
KSk7CisgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDbGFzcyo+
KEpTQzo6SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIobGV4aWNh
bEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIGF0dHJpYnV0ZU5hbWUpKSkpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVj
dCkpIHsKKyAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ID09IENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
Qzo6dGhyb3dWTURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLCBhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OlJlamVjdFByb21pc2UpCisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCByZWplY3RQcm9taXNlV2l0aEdldHRlclR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6
OmVuY29kZShKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGdl
dHRlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgYXR0cmlidXRlTmFtZSkpKSk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICB0ZW1wbGF0ZTxTdGF0aWNHZXR0ZXIgZ2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBnZXRTdGF0aWMoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3NTc5OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDcgQEAgc3ViIEdlbmVyYXRlSW50ZXJmYWNlCiAg
ICAgQWRkTWFwTGlrZUF0dHJpYnV0ZXNBbmRPcGVyYXRpb25JZk5lZWRlZCgkaW50ZXJmYWNlKTsK
ICAgICBBZGRTZXRMaWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmVlZGVkKCRpbnRlcmZhY2Up
OwogICAgIEFkZFN0cmluZ2lmaWVyT3BlcmF0aW9uSWZOZWVkZWQoJGludGVyZmFjZSk7CisgICAg
QWRkU2hhcmVkU3ludGhldGljQXR0cmlidXRlc0lmTmVlZGVkKCRpbnRlcmZhY2UpOwogCiAgICAg
aWYgKCRpbnRlcmZhY2UtPmlzQ2FsbGJhY2spIHsKICAgICAgICAgJG9iamVjdC0+R2VuZXJhdGVD
YWxsYmFja0ludGVyZmFjZUhlYWRlcigkaW50ZXJmYWNlLCAkZW51bWVyYXRpb25zLCAkZGljdGlv
bmFyaWVzKTsKQEAgLTE4NDAsNiArMTg0MSw3IEBAIHN1YiBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
CiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87CiAK
KyAgICByZXR1cm4gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCBHZXRTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIGlm
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGV9OwogICAgIHJldHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7
CiAgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNv
bnN0cnVjdG9yIiAuIE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPm5h
bWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+
V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuIE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRh
dHRyaWJ1dGUtPm5hbWUpIC4gIkNvbnN0cnVjdG9yIiBpZiAkY29kZUdlbmVyYXRvci0+SXNDb25z
dHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CkBAIC0xODUwLDYgKzE4NTIsNyBAQCBzdWIg
R2V0QXR0cmlidXRlU2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKSA9IEBfOwogCisgICAgcmV0dXJuIEdldEF0dHJpYnV0ZVNldHRlck5hbWUo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKICAgICByZXR1cm4gInNldCIgLiAk
Y29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSkpIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
OwogICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjbGFzc05h
bWUpIC4gIkNvbnN0cnVjdG9yIiAuIE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRy
aWJ1dGUtPm5hbWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgIHJldHVybiAic2V0IiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gTWFuZ2xlQXR0cmlidXRl
T3JGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+bmFtZSk7CkBAIC00MjgwLDI0ICs0MjgzLDggQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoJHtjb25zdHJ1Y3RvckdldHRlcn0p
O1xuIik7CiAgICAgICAgIH0KIAotICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGlu
dGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4o
JGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0KLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0
cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1
dGUpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRnZXR0ZXIg
PSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUigke2dldHRlcn0pO1xuIik7Ci0gICAgICAgICAgICB1bmxlc3MgKElzUmVh
ZG9ubHkoJGF0dHJpYnV0ZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRh
dHRyaWJ1dGUtPnR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgbXkgJHJlYWRXcml0ZUNvbmRpdGlv
bmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWxseVJlYWRX
cml0ZX07Ci0gICAgICAgICAgICAgICAgaWYgKCRyZWFkV3JpdGVDb25kaXRpb25hbCkgewotICAg
ICAgICAgICAgICAgICAgICBteSAkcmVhZFdyaXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkcmVh
ZFdyaXRlQ29uZGl0aW9uYWwpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiNpZiAke3JlYWRXcml0ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIik7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1l
KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoJHtzZXR0
ZXJ9KTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4i
KSBpZiAkcmVhZFdyaXRlQ29uZGl0aW9uYWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAg
ICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc319LCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9
KSB7CisgICAgICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckFuZFNldHRlckRlY2xhcmF0
aW9uKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwog
ICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwpAQCAtNDg3Niw3
ICs0ODYzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAotICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAo
QHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgeworICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAo
QHskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTeW50aGV0aWNJRExBdHRyaWJ1dGVz
fX0sIEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgR2VuZXJhdGVBdHRyaWJ1
dGVHZXR0ZXJEZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpOwogICAgICAgICBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckRlZmluaXRpb24o
XEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAg
fQpAQCAtNTIwNyw3ICs1MTk0LDggQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURl
ZmluaXRpbwogICAgIG15IEBzaWduYXR1cmVBcmd1bWVudHMgPSAoKTsKICAgICBwdXNoKEBzaWdu
YXR1cmVBcmd1bWVudHMsICJKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCIpOwog
ICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIiR7Y2xhc3NOYW1lfSYgdGhpc09iamVjdCIp
IGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKLSAgICAKKyAgICBwdXNoKEBzaWduYXR1cmVBcmd1
bWVudHMsICJQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4
dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FsbFdpdGh9LCAiUHJvcGVydHlOYW1lIik7CisKICAgICBteSAkbmVlZFNlY3VyaXR5Q2hlY2sg
PSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSAmJiAhJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJiAhJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXJ9
OwogICAgIG15ICRoYXNDdXN0b21HZXR0ZXIgPSBIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZSk7
CiAgICAgbXkgJGlzRXZlbnRIYW5kbGVyID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAiRXZl
bnRIYW5kbGVyIjsKQEAgLTUyNjksMTMgKzUyNTcsNiBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVH
ZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjoke2Nv
bnN0cnVjdG9yR2V0dGVyfShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSk7XG4iKTsKICAgICAgICAgfQotICAgIH0gZWxzaWYgKCRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NTU1Byb3BlcnR5fSkgewotICAgICAgICAkaW1w
bEluY2x1ZGVzeyJDU1NQcm9wZXJ0eU5hbWVzLmgifSA9IDE7Ci0gICAgICAgIG15ICRwcm9wZXJ0
eUlEID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9OwotCi0g
ICAgICAgIG15ICR0b0pTRXhwcmVzc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNl
cygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiaW1wbC5nZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHkke3Byb3BlcnR5SUR9KSIsICIqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSIp
OwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKCR7dG9KU0V4cHJlc3Npb259KSk7XG4iKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FjaGVkQXR0cmlidXRlfSkgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gdGhpc09iamVjdC5tXyIgLiAkYXR0cmlidXRlLT5u
YW1lIC4gIi5nZXQoKSlcbiIpOwpAQCAtNTM0MSwxMSArNTMyMiwzNiBAQCBzdWIgR2VuZXJhdGVB
dHRyaWJ1dGVHZXR0ZXJUcmFtcG9saW5lRGVmCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxu
XG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFyYXRp
b24KK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKSA9IEBfOworCisgICAgcmV0dXJuIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOworICAgIHJldHVybiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKKworICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRh
dHRyaWJ1dGUpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNpZiAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRy
aWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKCR7
Z2V0dGVyfSk7XG4iKTsKKyAgICB1bmxlc3MgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgfHwgJGNv
ZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpKSB7CisgICAg
ICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NvbmRpdGlvbmFsbHlSZWFkV3JpdGV9OworICAgICAgICBpZiAoJHJlYWRXcml0ZUNv
bmRpdGlvbmFsKSB7CisgICAgICAgICAgICBteSAkcmVhZFdyaXRlQ29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVW
YWx1ZSgkcmVhZFdyaXRlQ29uZGl0aW9uYWwpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiI2lmICR7cmVhZFdyaXRlQ29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKKyAgICAgICAgfQor
ICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoJHtzZXR0ZXJ9KTtcbiIpOworICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRyZWFkV3JpdGVDb25kaXRpb25hbDsK
KyAgICB9CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7Cit9CisKIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24KIHsK
ICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KSA9IEBfOwogCiAgICAgcmV0dXJuIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOworICAgIHJldHVybiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKIAogICAgIG15ICRhdHRyaWJ1dGVHZXR0
ZXJOYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
YXR0cmlidXRlKTsKICAgICBteSAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUgPSAkYXR0cmlidXRl
R2V0dGVyTmFtZSAuICJHZXR0ZXIiOwpAQCAtNTM3MCw2ICs1Mzc2LDcgQEAgc3ViIEdlbmVyYXRl
QXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpbwogICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50
cywgIkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0Iik7CiAgICAgcHVzaChAc2ln
bmF0dXJlQXJndW1lbnRzLCAiJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0IikgaWYgISRhdHRyaWJ1
dGUtPmlzU3RhdGljOwogICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIkpTVmFsdWUgdmFs
dWUiKTsKKyAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICJQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAiUHJvcGVydHlOYW1lIik7
CiAKICAgICBteSAkbmVlZFNlY3VyaXR5Q2hlY2sgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJ9OwogICAgIG15ICRoYXNDdXN0b21TZXR0ZXIg
PSBIYXNDdXN0b21TZXR0ZXIoJGF0dHJpYnV0ZSk7CkBAIC01NDE5LDIxICs1NDI2LDYgQEAgc3Vi
IEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyQm9keURlZmluaXRpbwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoJnRoaXNPYmplY3QsIHZhbHVlKTtc
biIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZW5zdXJlU3RpbGxBbGl2ZUhl
cmUodmFsdWUpO1xuXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVy
biB0cnVlO1xuIik7Ci0gICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q1NTUHJvcGVydHl9KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkNTU1Byb3BlcnR5TmFt
ZXMuaCJ9ID0gMTsKLQotICAgICAgICBteSAkcHJvcGVydHlJRCA9ICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NTU1Byb3BlcnR5fTsKLQotICAgICAgICBteSAkZXhjZXB0aW9uVGhy
b3dlciA9IEdldEF0dHJpYnV0ZUV4Y2VwdGlvblRocm93ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSk7Ci0gICAgICAgIG15ICR0b05hdGl2ZUV4cHJlc3Npb24gPSBKU1ZhbHVlVG9OYXRpdmUoJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9LCAiJmxleGljYWxHbG9iYWxPYmplY3QiLCAibGV4aWNhbEdsb2Jh
bE9iamVjdCIsICJ0aGlzT2JqZWN0IiwgIip0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpIiwgJGV4
Y2VwdGlvblRocm93ZXIpOwotCi0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAke3RvTmF0aXZlRXhwcmVzc2lvbn07XG4i
KTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZmFsc2UpO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0ge1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eSR7cHJvcGVydHlJRH0sIFdURk1vdmUobmF0aXZlVmFsdWUpLCBmYWxzZSk7XG4iKTsKLSAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH0pO1xuIik7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgIH0gZWxzaWYgKCRpc1JlcGxhY2Vh
YmxlKSB7CiAgICAgICAgIG15ICRpZCA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBwcm9wZXJ0eS5cbiIp
OwpAQCAtNTUzOSw3ICs1NTMxLDggQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVmaW5p
dGlvbgogICAgIHJldHVybiBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwogICAgIHJldHVybiBp
ZiAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAg
ICAgcmV0dXJuIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAgIAor
ICAgIHJldHVybiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsKKwogICAgIG15ICRjb25kaXRpb25hbCA9ICRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKICAgICBpZiAoJGNvbmRp
dGlvbmFsKSB7CiAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25h
bCk7CkBAIC02MDAzLDYgKzU5OTYsMTAgQEAgc3ViIEdlbmVyYXRlQ2FsbFdpdGgKICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiV29y
bGQiKSkgewogICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJ3b3JsZEZvckRPTU9iamVjdCgk
e3RoaXNSZWZlcmVuY2V9KSIpOwogICAgIH0KKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiUHJvcGVydHlOYW1lIikpIHsKKyAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQ29udmVydFN0cmluZ3MuaCIpOworICAgICAgICBw
dXNoKEBjYWxsV2l0aEFyZ3MsICJwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1l
KSIpOworICAgIH0KIAogICAgIHJldHVybiBAY2FsbFdpdGhBcmdzOwogfQpAQCAtODA0NSw0ICs4
MDQyLDU2IEBAIHN1YiBHZW5lcmF0ZUN1c3RvbUVsZW1lbnRSZWFjdGlvbnNTdGFja0kKICAgICB9
CiB9CiAKK3N1YiBNYWtlU2hhcmVkU3ludGhldGljQXR0cmlidXRlCit7CisgICAgbXkgKCRuYW1l
LCAkYmFzZUF0dHJpYnV0ZSkgPSBAXzsKKworICAgIG15ICRzaGFyZWRBdHRyaWJ1dGUgPSBJRExB
dHRyaWJ1dGUtPm5ldygpOworICAgICRzaGFyZWRBdHRyaWJ1dGUtPm5hbWUoJG5hbWUpOworICAg
ICRzaGFyZWRBdHRyaWJ1dGUtPnR5cGUoSURMUGFyc2VyOjpjbG9uZVR5cGUoJGJhc2VBdHRyaWJ1
dGUtPnR5cGUpKTsKKyAgICBJRExQYXJzZXI6OmNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJHNoYXJl
ZEF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkYmFzZUF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzKTsKKworICAgICMgUmVwbGFjZSAiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSIgZXh0ZW5kZWQgYXR0cmlidXRlIHdpdGggIklzU2hhcmVkU3ludGhldGljQXR0cmli
dXRlIiBleHRlbmRlZCBhdHRyaWJ1dGUgdG8KKyAgICAjIHRoYXQgdGhpcyBpcyB0aGUgcmVhbCBz
eW50aGVzaXplZCBhdHRyaWJ1dGUuCisgICAgZGVsZXRlICRzaGFyZWRBdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OworICAg
ICRzaGFyZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lzU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlfSA9IDE7CisKKyAgICByZXR1cm4gJHNoYXJlZEF0dHJpYnV0ZTsKK30KKworc3Vi
IEFkZFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZXNJZk5lZWRlZAoreworICAgIG15ICRpbnRlcmZh
Y2UgPSBzaGlmdDsKKworICAgICMgVXNlIGEgZmFrZSBleHRlbmRlZCBhdHRyaWJ1dGUsIFN5bnRo
ZXRpY0lETEF0dHJpYnV0ZXMsIHRvIHN0b3JlIHRoZSBuZXcgYXR0cmlidXRlcworICAgIGlmIChu
b3QgZXhpc3RzICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0
dHJpYnV0ZXN9KSB7CisgICAgICAgIG15ICVzeW50aGV0aWNJRExBdHRyaWJ1dGVzID0gKCApOwor
ICAgICAgICBteSBAYXR0cmlidXRlcyA9ICgpOworICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlfSkgeworICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CisgICAgICAg
ICAgICAgICAgaWYgKG5vdCAkc3ludGhldGljSURMQXR0cmlidXRlc3skbmFtZX0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJHN5bnRoZXRpY0F0dHJpYnV0ZSA9IE1ha2VTaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUoJG5hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgICAgICAkc3lu
dGhldGljSURMQXR0cmlidXRlc3skbmFtZX0gPSAxOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBhdHRyaWJ1dGVzLCAkc3ludGhldGljQXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57U3ludGhldGljSURMQXR0cmlidXRlc30gPSBcQGF0dHJpYnV0ZXM7CisgICAgfQor
fQorCitzdWIgR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlCit7CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpID0gQF87CisKKyAgICBmb3JlYWNoIG15ICRzeW50aGV0aWNBdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U3ludGhldGljSURMQXR0cmli
dXRlc319KSB7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfSBlcSAkc3ludGhldGljQXR0cmlidXRl
LT5uYW1lKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAkc3ludGhldGljQXR0cmlidXRlOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB1bmRlZjsKK30KKwogMTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29u
CShyZXZpc2lvbiAyNzU3OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDYgQEAKICAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2N1c3RvbS1lbGVtZW50cy5odG1sI2NlcmVhY3Rpb25zIgogICAgICAgICAgICAgfQogICAgICAg
ICB9LAotICAgICAgICAiQ1NTUHJvcGVydHkiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJhdHRyaWJ1dGUiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQotICAgICAg
ICB9LAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRlIjogewogICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAgICAgfSwKQEAgLTU3LDcgKzUzLDcgQEAKICAg
ICAgICAgfSwKICAgICAgICAgIkNhbGxXaXRoIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdLAotICAgICAgICAgICAgInZhbHVlcyI6
IFsiRG9jdW1lbnQiLCAiRXhlY1N0YXRlIiwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiR2xv
YmFsT2JqZWN0IiwgIkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyIsICJSZXNwb25zaWJsZURv
Y3VtZW50IiwgIldvcmxkIl0sCisgICAgICAgICAgICAidmFsdWVzIjogWyJEb2N1bWVudCIsICJF
eGVjU3RhdGUiLCAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIsICJHbG9iYWxPYmplY3QiLCAiQWN0
aXZlV2luZG93IiwgIkZpcnN0V2luZG93IiwgIlJlc3BvbnNpYmxlRG9jdW1lbnQiLCAiV29ybGQi
LCAiUHJvcGVydHlOYW1lIl0sCiAgICAgICAgICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRy
dWUKICAgICAgICAgfSwKICAgICAgICAgIkNoZWNrU2VjdXJpdHkiOiB7CkBAIC0xNTQsNiArMTUw
LDkgQEAKICAgICAgICAgIkRlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eSI6IHsKICAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCisgICAgICAgICJE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIjogeworICAgICAgICAgICAgImNvbnRl
eHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KKyAgICAgICAgfSwKICAgICAgICAgIkRpc2FibGVk
QnlRdWlyayI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSIs
ICJkaWN0aW9uYXJ5IiwgImVudW0iLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiIsICJjb25zdGFu
dCIsICJkaWN0aW9uYXJ5LW1lbWJlciIsICJpbmNsdWRlcyJdLAogICAgICAgICAgICAgInZhbHVl
cyI6IFsiKiJdLApAQCAtNDc1LDcgKzQ3NCw3IEBACiAgICAgICAgIH0sCiAgICAgICAgICJTZXR0
ZXJDYWxsV2l0aCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiRXhlY1N0YXRlIiwgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQiLCAiR2xvYmFsT2JqZWN0IiwgIkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyJd
LAorICAgICAgICAgICAgInZhbHVlcyI6IFsiRXhlY1N0YXRlIiwgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQiLCAiR2xvYmFsT2JqZWN0IiwgIkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyIsICJQ
cm9wZXJ0eU5hbWUiXSwKICAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQog
ICAgICAgICB9LAogICAgICAgICAiU2V0dGluZ3NDb25kaXRpb25hbGx5UmVhZFdyaXRlIjogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xv
YmFsQ29uc3RydWN0b3JzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCShyZXZpc2lv
biAyNzU3OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGlu
Z1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNiBA
QAogcGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRl
c3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yIFRlc3RDRVJlYWN0aW9uczsKICAgICBhdHRyaWJ1dGUg
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllcjsKLSAgICBhdHRyaWJ1dGUgVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IgVGVzdENT
U1Byb3BlcnR5OwogICAgIGF0dHJpYnV0ZSBUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yIFRlc3RD
YWxsVHJhY2VyOwogICAgIFtDb25kaXRpb25hbD1URVNUX0NPTkRJVElPTkFMXSBhdHRyaWJ1dGUg
VGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IgVGVzdENhbGxiYWNrSW50ZXJmYWNlOwog
ICAgIGF0dHJpYnV0ZSBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
ciBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I7CkBAIC05LDYgKzgsNyBAQCBwYXJ0
aWFsIGludGVyZmFjZSBUZXN0R2xvYmFsT2JqZWN0IHsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlOwogICAgIGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRvSlNPTkluaGVy
aXRDb25zdHJ1Y3RvciBUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQ7CiAgICAgYXR0cmlidXRlIFRl
c3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0RmluYWw7CisgICAgYXR0cmlidXRlIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlQ29uc3RydWN0b3IgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGU7CiAgICAgYXR0cmlidXRlIFRlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yIFRlc3REb21h
aW5TZWN1cml0eTsKICAgICBhdHRyaWJ1dGUgVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
ciBUZXN0RXZlbnRDb25zdHJ1Y3RvcjsKICAgICBhdHRyaWJ1dGUgVGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3IgVGVzdEV2ZW50VGFyZ2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXAJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw5ICsyNCw2IEBAIFdlYkRPTVRlc3RDRVJlYWN0aW9ucy5oOiAKIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuaDogCiBET01UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKIFdl
YkRPTVRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6IAotSlNUZXN0Q1NTUHJvcGVydHkuaDog
Ci1ET01UZXN0Q1NTUHJvcGVydHkuaDogCi1XZWJET01UZXN0Q1NTUHJvcGVydHkuaDogCiBKU1Rl
c3RDYWxsVHJhY2VyLmg6IAogRE9NVGVzdENhbGxUcmFjZXIuaDogCiBXZWJET01UZXN0Q2FsbFRy
YWNlci5oOiAKQEAgLTc2LDYgKzczLDkgQEAgV2ViRE9NVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0
Lmg6IAogSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5oOiAKIERPTVRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdEZpbmFsLmg6IAogV2ViRE9NVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Rmlu
YWwuaDogCitKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmg6IAorRE9N
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaDogCitXZWJET01UZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oOiAKIEpTVGVzdERlcml2ZWREaWN0aW9u
YXJ5Lmg6IAogRE9NVGVzdERlcml2ZWREaWN0aW9uYXJ5Lmg6IAogV2ViRE9NVGVzdERlcml2ZWRE
aWN0aW9uYXJ5Lmg6IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RDU1NQcm9wZXJ0eS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGwJKHJldmlzaW9uIDI3NTc5OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRs
CShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXR5cGVkZWYgVVNW
U3RyaW5nIENTU09NU3RyaW5nOwotCi1bCi0gICAgRXhwb3NlZD1UZXN0R2xvYmFsT2JqZWN0Ci1d
IGludGVyZmFjZSBUZXN0Q1NTUHJvcGVydHkgewotICAgIFtDRVJlYWN0aW9ucywgQ1NTUHJvcGVy
dHk9UHJvcGVydHlOYW1lXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NP
TVN0cmluZyBwcm9wZXJ0eTsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKwordHlwZWRlZiBVU1ZTdHJpbmcgQ1NTT01TdHJpbmc7CisKK1sKKyAgICBFeHBvc2VkPVRl
c3RHbG9iYWxPYmplY3QKK10gaW50ZXJmYWNlIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlIHsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMSwgQ2FsbFdpdGg9UHJvcGVydHlOYW1lXSBhdHRyaWJ1
dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBwcm9wZXJ0eTE7CisgICAg
W0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNoYXJlZEF0
dHJpYnV0ZTEsIENhbGxXaXRoPVByb3BlcnR5TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9F
bXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHkyOworICAgIFtDRVJlYWN0aW9ucywgRGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFyZWRBdHRyaWJ1dGUxLCBDYWxsV2l0
aD1Qcm9wZXJ0eU5hbWVdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09N
U3RyaW5nIHByb3BlcnR5MzsKKyAgICBbQ0VSZWFjdGlvbnMsIERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMiwgQ2FsbFdpdGg9UHJvcGVydHlOYW1lXSBh
dHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBDU1NPTVN0cmluZyBwcm9wZXJ0eTQ7
CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPXNo
YXJlZEF0dHJpYnV0ZTIsIENhbGxXaXRoPVByb3BlcnR5TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lO
dWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHk1OworfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENTU1Byb3BlcnR5LmNwcAkocmV2aXNpb24gMjc1Nzk5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDI5OCArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1Rlc3RDU1NQcm9wZXJ0eS5oIgotCi0jaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1
ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3Bh
Y2VzLmgiCi0jaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKLSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2xvdFZpc2l0b3JN
YWNyb3MuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KLSNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcg
bmFtZXNwYWNlIEpTQzsKLQotLy8gQXR0cmlidXRlcwotCi1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKLXN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsKLXN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KTsK
LQotY2xhc3MgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpK
U05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZp
bmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NTUHJvcGVy
dHlQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
LSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0Q1NTUHJvcGVydHlQ
cm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Ci0g
ICAgfQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTVGVzdENT
U1Byb3BlcnR5UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qo
dm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
Q1NTUHJvcGVydHlQcm90b3R5cGUsIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpCYXNlKTsK
LQotdXNpbmcgSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdENTU1Byb3BlcnR5PjsKLQotdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsK
LSAgICBVTlVTRURfUEFSQU0odm0pOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Q
cm90b3R5cGUoKTsKLX0KLQotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0Q1NTUHJvcGVydHk6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZt
LCAiVGVzdENTU1Byb3BlcnR5Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLX0KLQot
dGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVj
dG9yKSB9OwotCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5Q29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigwKSB9IH0sCi0gICAgeyAicHJvcGVydHkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHkpIH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5Iiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdENTU1Byb3BlcnR5Ojpp
bmZvKCksIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAg
ICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5OjpzX2luZm8gPSB7ICJUZXN0Q1NTUHJvcGVydHkiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dENTU1Byb3BlcnR5KSB9OwotCi1KU1Rlc3RDU1NQcm9wZXJ0eTo6SlNUZXN0Q1NTUHJvcGVydHko
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0Q1NTUHJv
cGVydHk+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12
b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBU
ZXN0Q1NTUHJvcGVydHk+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3Rp
dmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMg
QWN0aXZlRE9NT2JqZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6
Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
LXsKLSAgICByZXR1cm4gSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmds
b2JhbE9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0K
LUpTT2JqZWN0KiBKU1Rlc3RDU1NQcm9wZXJ0eTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpT
VGVzdENTU1Byb3BlcnR5Pih2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3RD
U1NQcm9wZXJ0eTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDU1NQ
cm9wZXJ0eURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdENTU1Byb3BlcnR5KiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0
LT5KU1Rlc3RDU1NQcm9wZXJ0eTo6fkpTVGVzdENTU1Byb3BlcnR5KCk7Ci19Ci0KLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdENTU1Byb3BlcnR5KiBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVy
dHk+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJv
cGVydHkqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJv
cGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCi17Ci0gICAgVk0mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkp
KTsKLX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9w
ZXJ0eSYgdGhpc09iamVjdCkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdB
ZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGlt
cGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5UHJvcGVydHlOYW1lKSkpKTsK
LX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpnZXQ8anNUZXN0Q1NTUHJvcGVydHlfcHJvcGVy
dHlHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0Q1NTUHJvcGVydHlfcHJvcGVydHlTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5JiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW52b2tlRnVu
Y3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwuc2V0UHJvcGVydHlJbnRlcm5h
bChDU1NQcm9wZXJ0eVByb3BlcnR5TmFtZSwgV1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTsK
LSAgICB9KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RDU1NQcm9wZXJ0eT46OnNldDxzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9w
cm9wZXJ0eVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0Q1NTUHJv
cGVydHk6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnRE
YXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAg
YXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3Bh
Y2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKSkKLSAgICAgICAg
cmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpK
U0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHk+IHx8ICFKU1Rlc3RDU1NQcm9w
ZXJ0eTo6bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eT4pCi0gICAg
ICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdENTU1Byb3BlcnR5ID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7Ci0gICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdENTU1Byb3BlcnR5KTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdENTU1Byb3BlcnR5LmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJl
YWNoYWJsZS1jb2RlIikKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBh
cmUiKQotICAgIHZvaWQgKCpteVZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBK
U0M6OlNsb3RWaXNpdG9yJikgPSBKU1Rlc3RDU1NQcm9wZXJ0eTo6dmlzaXRPdXRwdXRDb25zdHJh
aW50czsKLSAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2Vs
bCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzOwotICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0NlbGxWaXNpdE91dHB1
dENvbnN0cmFpbnQpCi0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygp
LmFwcGVuZChzcGFjZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1NfRU5E
Ci0gICAgcmV0dXJuIHNwYWNlOwotfQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5OjphbmFseXpl
SGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGNlbGwpOwotICAgIGFuYWx5
emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkp
OwotICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAg
IGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFseXpl
SGVhcChjZWxsLCBhbmFseXplcik7Ci19Ci0KLWJvb2wgSlNUZXN0Q1NTUHJvcGVydHlPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqLCBBYnN0cmFjdFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVh
c29uKQotewotICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwotICAgIFVOVVNFRF9QQVJBTSh2aXNp
dG9yKTsKLSAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXZvaWQgSlNUZXN0Q1NTUHJvcGVydHlPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0Q1NTUHJv
cGVydHkgPSBzdGF0aWNfY2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQq
Pihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdENTU1Byb3BlcnR5
LT53cmFwcGVkKCksIGpzVGVzdENTU1Byb3BlcnR5KTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTog
NDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9f
N1Rlc3RDU1NQcm9wZXJ0eUBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTVUZXN0Q1NTUHJvcGVydHlFW107IH0KLSNl
bmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENTU1By
b3BlcnR5PiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAg
Y29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5w
dHIoKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RDU1NQcm9wZXJ0eUBXZWJDb3JlQEA2QkAiKTsKLSNl
bHNlCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUxNVRl
c3RDU1NQcm9wZXJ0eUVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdENT
U1Byb3BlcnR5IGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUK
LSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJm
YWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVz
dENTU1Byb3BlcnR5Pjo6dmFsdWUsICJUZXN0Q1NTUHJvcGVydHkgaXMgbm90IHBvbHltb3JwaGlj
Iik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBh
IHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1YmNs
YXNzZXMuIElmIFRlc3RDU1NQcm9wZXJ0eSBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQK
LSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdENTU1Byb3BlcnR5IHlv
dSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBT
a2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5p
dGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRW
VGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RDU1NQ
cm9wZXJ0eT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENTU1Byb3BlcnR5JiBpbXBsKQotewotICAgIHJl
dHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0K
LVRlc3RDU1NQcm9wZXJ0eSogSlNUZXN0Q1NTUHJvcGVydHk6OnRvV3JhcHBlZChKU0M6OlZNJiB2
bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eSo+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q1NTUHJvcGVydHkuaAkocmV2aXNpb24gMjc1Nzk5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw5MyArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdENTU1Byb3BlcnR5
LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSlNUZXN0Q1NTUHJvcGVydHkgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RD
U1NQcm9wZXJ0eT4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVz
dENTU1Byb3BlcnR5PjsKLSAgICBzdGF0aWMgSlNUZXN0Q1NTUHJvcGVydHkqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdENTU1Byb3BlcnR5PiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3RDU1NQcm9w
ZXJ0eSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDU1NQcm9w
ZXJ0eT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RDU1NQcm9wZXJ0eShzdHJ1Y3R1
cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQot
Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0Q1NTUHJvcGVydHkq
IHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQzo6SlNDZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCksIEpTQzo6Tm9uQXJyYXkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBpZiBj
b25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKTsKLSAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6
OkhlYXBBbmFseXplciYpOwotcHJvdGVjdGVkOgotICAgIEpTVGVzdENTU1Byb3BlcnR5KEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmKTsK
LQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0
Q1NTUHJvcGVydHlPd25lciBmaW5hbCA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1w
dWJsaWM6Ci0gICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImLCBj
b25zdCBjaGFyKiopIGZpbmFsOwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7Ci19OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFu
ZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0Q1NTUHJvcGVydHkq
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RDU1NQcm9wZXJ0eU93bmVyPiBv
d25lcjsKLSAgICByZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBl
cktleShUZXN0Q1NTUHJvcGVydHkqIHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3Jh
cHBhYmxlT2JqZWN0OwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0Q1NTUHJvcGVydHkmKTsKLWlubGluZSBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q1NTUHJvcGVydHkqIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwp
IDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4m
Jik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmUHRyPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05l
d2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFz
ZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9N
V3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0Q1NTUHJvcGVydHk+IHsKLSAgICB1c2luZyBXcmFw
cGVyQ2xhc3MgPSBKU1Rlc3RDU1NQcm9wZXJ0eTsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5U
eXBlID0gVGVzdENTU1Byb3BlcnR5KjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzM1IEBACisvKgorICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgorI2luY2x1ZGUgIkRP
TUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCisjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Ns
b3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxp
bmVzLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJl
cGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZUNvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9z
aGFyZWRBdHRyaWJ1dGUyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMik7
CisKK2NsYXNzIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1
c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU+KHZtLmhlYXAp
KSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJu
ICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7
Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGU+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5V
U0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBl
KCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9
CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVET01Db25zdHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
CisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3Ry
dWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTEiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSkgfSB9LAorICAgIHsgInByb3Bl
cnR5MiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0
b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1
dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRy
aWJ1dGUxKSB9IH0sCisgICAgeyAicHJvcGVydHkzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNj
ZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRl
MikgfSB9LAorICAgIHsgInByb3BlcnR5NSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8g
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6c19pbmZv
ID0geyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRp
Y1Byb3BlcnRpZXModm0sIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6
OmluZm8oKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlw
ZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFO
U0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlOjpzX2luZm8gPSB7ICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSkgfTsKKwor
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6SlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKQoreworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3Nl
cnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBb
QWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFz
c2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90
b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGU+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZURPTUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihjZWxsKTsKKyAgICB0aGlz
T2JqZWN0LT5KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjp+SlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgpOworfQorCit0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBJRExBdHRyaWJ1
dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
K3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5
cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTFHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZT
dHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnNoYXJlZEF0dHJp
YnV0ZTEocHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkpKSkpOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5h
bWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZT46OmdldDxqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTFHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpB
c3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorewor
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2FjeU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJ
RExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0
aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0U2hhcmVkQXR0cmlidXRlMShwcm9wZXJ0eU5h
bWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSwgV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAg
IH0pOworICAgIHJldHVybiB0cnVlOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUx
LCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmli
dXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlPjo6c2V0PHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVf
c2hhcmVkQXR0cmlidXRlMkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYgdGhpc09iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGltcGwuc2hhcmVkQXR0cmlidXRlMihwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJv
cGVydHlOYW1lKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTIsIChKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPjo6Z2V0PGpzVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMkdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTJTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAg
ICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRTaGFy
ZWRBdHRyaWJ1dGUyKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpzZXQ8c2V0SlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0dHJp
YnV0ZU5hbWUpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOworICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAg
aWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4gfHwgIUpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlm
IGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwg
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4pCisgICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUpOworICAgIGVsc2UKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNv
U3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOworICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZS5nZXQoKTsKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUt
Y29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAg
ICB2b2lkICgqbXlWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90
VmlzaXRvciYpID0gSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6dmlz
aXRPdXRwdXRDb25zdHJhaW50czsKKyAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJh
aW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNp
dE91dHB1dENvbnN0cmFpbnRzOworICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBq
c0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29u
c3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05P
UkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwg
SGVhcEFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqPihjZWxsKTsKKyAgICBh
bmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBl
ZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAg
ICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5h
bHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBBYnN0cmFjdFNsb3RWaXNpdG9y
JiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5k
bGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29u
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8SlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRv
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGUtPndyYXBwZWQoKSwganNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZSk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lO
KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZv
aWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZUBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzhUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZUVbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4mJiBpbXBsKQor
eworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFjdHVh
bFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBMQVRG
T1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUBXZWJDb3JlQEA2QkAi
KTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNv
cmUzOFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRVsyXTsKKyNlbmRpZgor
CisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAg
Ly8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBk
ZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPjo6dmFsdWUsICJUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElm
IHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUg
YnVnLCBvcgorICAgIC8vIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIGhh
cyBzdWJjbGFzc2VzLiBJZiBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSBo
YXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVu
dGx5IHJlcXVpcmUgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgeW91IHRv
IG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBW
VGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9u
CisgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU0RPTVdyYXBwZXI8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+Owor
ICAgIHN0YXRpYyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYmIGltcGwp
CisgICAgeworICAgICAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50
bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNl
Rm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFj
ZUZvckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2Vs
bCosIEpTQzo6SGVhcEFuYWx5emVyJik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0RGVsZWdhdGVU
b1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYmKTsKKwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZU93bmVyIGZpbmFsIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6QWJz
dHJhY3RTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKikgZmluYWw7CisgICAgdm9pZCBmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KSBmaW5hbDsKK307CisK
K2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3Js
ZCYsIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKikKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZU93bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9p
ZCogd3JhcHBlcktleShUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogd3Jh
cHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlJik7CitpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
UmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiYmKTsKK2lubGluZSBK
U0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+JiYgaW1wbCkgeyByZXR1cm4gaW1w
bCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBp
bXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0
cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5
cGUgPSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSo7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjc1Nzk5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxMyBA
QAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFj
dGlvbnMuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgiCi0jaW5j
bHVkZSAiSlNUZXN0Q1NTUHJvcGVydHkuaCIKICNpbmNsdWRlICJKU1Rlc3RDYWxsVHJhY2VyLmgi
CiAjaW5jbHVkZSAiSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJKU1Rlc3RET01KSVQuaCIKICNpbmNsdWRlICJKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZS5oIgogI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0Lmgi
CiAjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbC5oIgorI2luY2x1ZGUg
IkpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJK
U1Rlc3REb21haW5TZWN1cml0eS5oIgogI2luY2x1ZGUgIkpTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJKU1Rlc3RFdmVudFRhcmdldC5oIgpAQCAtMTY3LDcgKzE2Nyw2IEBAIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGUKICNlbmRpZgogc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9u
c0NvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEds
b2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKTsKLXN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJv
cGVydHlDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3Rvcik7CiAjaWYgRU5BQkxFKFRF
U1RfQ09ORElUSU9OQUwpCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IpOwpAQCAtMTc3LDYg
KzE3Niw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEcKIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVs
dFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IpOwogc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REb21haW5TZWN1
cml0eUNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RXZlbnRUYXJn
ZXRDb25zdHJ1Y3Rvcik7CkBAIC0yMzgsNyArMjM4LDcgQEAgdXNpbmcgSlNUZXN0R2xvYmFsT2Jq
ZWN0RE9NQ29uc3RydWN0b3IgPQogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2OF0g
PSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2Jq
ZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA0MCwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LApAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDUsIDI2NyB9LAorICAgIHsgNjUsIC0xIH0sCiAgICAgeyAx
MywgMjYwIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMjkxLDcgKzI5
MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgMzgsIC0xIH0sCiAgICAgeyAxOSwgMjU3IH0sCi0gICAgeyA3LCAtMSB9
LAorICAgIHsgNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDUsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKQEAgLTMxNSw3ICszMTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyA2LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTMzMSw3ICszMzEsNyBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxMCwgMjU2IH0sCisgICAg
eyA5LCAyNTYgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNTcsIC0xIH0sCiAgICAgeyAxOCwg
LTEgfSwKQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUCiAgICAgeyA0NywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCi0gICAgeyAxMSwgLTEgfSwKKyAgICB7IDEwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgMTIs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMTIsIC0xIH0sCisgICAgeyAxMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ2MywxMyArNDYzLDEzIEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgOSwgLTEgfSwKKyAgICB7IDgsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IDQ4LCAyNjMgfSwKLSAgICB7IDgsIDI2MiB9LAorICAgIHsgNywg
MjYyIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDU5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC01MDYsNyArNTA2LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgNTQsIC0xIH0sCiAgICAgeyA2MCwgLTEgfSwKICAgICB7IDY0LCAtMSB9LAot
ICAgIHsgNjUsIC0xIH0sCiB9OwogCiAKQEAgLTUyMSw3ICs1MjAsNiBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAjZW5kaWYKICAgICB7ICJUZXN0Q0VSZWFjdGlv
bnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKICAgICB7ICJUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCi0gICAgeyAiVGVzdENTU1Byb3BlcnR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdENhbGxUcmFjZXIi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogI2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQogICAgIHsgIlRlc3RDYWxsYmFja0lu
dGVyZmFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsYmFja0ludGVyZmFj
ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAtNTMzLDYgKzUzMSw3IEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICAgICB7ICJUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0
SW5oZXJpdGFuY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRvSlNP
TkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RGVmYXVs
dFRvSlNPTkluaGVyaXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVmYXVsdFRv
SlNPTkluaGVyaXRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RGVmYXVsdFRvSlNPTklu
aGVyaXRGaW5hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdEZpbmFsQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsg
IlRlc3REb21haW5TZWN1cml0eSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REb21h
aW5TZWN1cml0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RFdmVudENvbnN0cnVjdG9y
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RXZlbnRUYXJnZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdF9UZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTg4OSwxNyArODg4
LDYgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iagogICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3Rvckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2Jq
ZWN0JiB0aGlzT2JqZWN0KQotewotICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICByZXR1cm4gSlNUZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Ci19Ci0KLUpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCi17Ci0gICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rl
c3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAtOTgwLDYgKzk2
OCwxNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqCiAgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwogfQogCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVT
RURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkK
K3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRl
TmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVz
dERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKIHsKICAgICBVTlVT
RURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyNzU3OTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIx
Nyw2MSArMjE4LDExMiBAQCBjb25zdCBTZXR0aW5ncyogQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0
CiAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQoKSA/ICZwYXJlbnRFbGVtZW50KCktPmRvY3VtZW50
KCkuc2V0dGluZ3MoKSA6IG51bGxwdHI7CiB9CiAKLSNpZiAhRU5BQkxFKEFUVFJJQlVURV9CQVNF
RF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCitlbnVtIGNsYXNzIENTU1By
b3BlcnR5TG9va3VwTW9kZSB7IENvbnZlcnRVc2luZ0Rhc2hQcmVmaXgsIENvbnZlcnRVc2luZ05v
RGFzaFByZWZpeCwgTm9Db252ZXJzaW9uIH07CiAKLU9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBk
b3VibGU+PiBDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYg
cHJvcGVydHlOYW1lKQordGVtcGxhdGU8Q1NTUHJvcGVydHlMb29rdXBNb2RlIG1vZGU+IHN0YXRp
YyBDU1NQcm9wZXJ0eUlEIGxvb2t1cENTU1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZShjb25zdCBB
dG9tU3RyaW5nJiBhdHRyaWJ1dGUpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgZ29pbmcgdG8g
cmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBjc3MgcHJvcGVydGllcyBkaXNhYmxlZCBieSBT
ZXR0aW5ncyBpZiBzZXR0aW5ncygpIHJldHVybnMgbnVsbHB0ci4KLSAgICBhdXRvIHByb3BlcnR5
SUQgPSBwcm9wZXJ0eUlERnJvbUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1l
LCBzZXR0aW5ncygpKTsKLSAgICBpZiAoIXByb3BlcnR5SUQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8QXRvbVN0cmluZywg
Q1NTUHJvcGVydHlJRD4+IGNhY2hlOwogCi0gICAgaWYgKGF1dG8gdmFsdWUgPSBnZXRQcm9wZXJ0
eUNTU1ZhbHVlSW50ZXJuYWwocHJvcGVydHlJRCkpCi0gICAgICAgIHJldHVybiBWYXJpYW50PFN0
cmluZywgZG91YmxlPiB7IHZhbHVlLT5jc3NUZXh0KCkgfTsKKyAgICBpZiAoYXV0byBpZCA9IGNh
Y2hlLmdldCgpLmdldChhdHRyaWJ1dGUpKQorICAgICAgICByZXR1cm4gaWQ7CisKKyAgICBjaGFy
IG91dHB1dEJ1ZmZlclttYXhDU1NQcm9wZXJ0eU5hbWVMZW5ndGggKyAxXTsKKyAgICBjaGFyKiBv
dXRwdXRCdWZmZXJDdXJyZW50ID0gb3V0cHV0QnVmZmVyOworICAgIGNvbnN0IGNoYXIqIG91dHB1
dEJ1ZmZlclN0YXJ0ID0gb3V0cHV0QnVmZmVyQ3VycmVudDsKKworICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ0Rhc2hQcmVmaXggfHwg
bW9kZSA9PSBDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ05vRGFzaFByZWZpeCkg
eworICAgICAgICAvLyBDb252ZXJzaW9uIGlzIGltcGxlbWVudGluZyB0aGUgIklETCBhdHRyaWJ1
dGUgdG8gQ1NTIHByb3BlcnR5IGFsZ29yaXRobSIKKyAgICAgICAgLy8gZnJvbSBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2lkbC1hdHRyaWJ1dGUtdG8tY3NzLXByb3BlcnR5LgorCisg
ICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZl
cnRVc2luZ0Rhc2hQcmVmaXgpCisgICAgICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCsrID0g
Jy0nOworCisgICAgICAgIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhhdHRyaWJ1dGUsIFsmXShh
dXRvIGJ1ZmZlcikgeworICAgICAgICAgICAgd2hpbGUgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVt
YWluaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGMgPSAqYnVmZmVyKys7CisgICAgICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpc0FTQ0lJKGMpLCAiSW52YWxpZCBwcm9wZXJ0
eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICpvdXRw
dXRCdWZmZXJDdXJyZW50KysgPSAnLSc7CisgICAgICAgICAgICAgICAgICAgICpvdXRwdXRCdWZm
ZXJDdXJyZW50KysgPSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoYyk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgICpvdXRwdXRCdWZmZXJDdXJyZW50KysgPSBjOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQg
PSAnXDAnOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhh
dHRyaWJ1dGUsIFsmXShhdXRvIGJ1ZmZlcikgeworICAgICAgICAgICAgd2hpbGUgKGJ1ZmZlci5o
YXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGMgPSAqYnVm
ZmVyKys7CisgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShjID09ICctJyB8fCBp
c0FTQ0lJTG93ZXIoYyksICJJbnZhbGlkIHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICpvdXRwdXRCdWZmZXJDdXJy
ZW50KysgPSBjOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgKm91dHB1dEJ1
ZmZlckN1cnJlbnQgPSAnXDAnOworICAgIH0KIAotICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBh
IHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIpLCBpdCBjYW4gb25seSBiZSBh
Y2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwuCi0gICAgcmV0dXJuIFZhcmlh
bnQ8U3RyaW5nLCBkb3VibGU+IHsgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQp
IH07CisgICAgYXV0byBoYXNoVGFibGVFbnRyeSA9IGZpbmRQcm9wZXJ0eShvdXRwdXRCdWZmZXJT
dGFydCwgb3V0cHV0QnVmZmVyQ3VycmVudCAtIG91dHB1dEJ1ZmZlcik7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShoYXNoVGFibGVFbnRyeSwgIkludmFsaWQgcHJvcGVydHkgbmFtZTogJXMiLCBh
dHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvIGlkID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaGFzaFRhYmxlRW50cnktPmlkKTsKKyAgICBjYWNoZS5nZXQo
KS5hZGQoYXR0cmlidXRlLCBpZCk7CisgICAgcmV0dXJuIGlkOwogfQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXROYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYg
cHJvcGVydHlOYW1lLCBTdHJpbmcgdmFsdWUsIGJvb2wmIHByb3BlcnR5U3VwcG9ydGVkKQorU3Ry
aW5nIENTU1N0eWxlRGVjbGFyYXRpb246OnByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSkKIHsKLSAgICAvLyBGSVhNRTogVGhp
cyBpcyBnb2luZyB0byByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIGNzcyBwcm9wZXJ0aWVz
IGRpc2FibGVkIGJ5IFNldHRpbmdzIGlmIHNldHRpbmdzKCkgcmV0dXJucyBudWxscHRyLgotICAg
IGF1dG8gcHJvcGVydHlJRCA9IHByb3BlcnR5SURGcm9tSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFt
ZShwcm9wZXJ0eU5hbWUsIHNldHRpbmdzKCkpOwotICAgIGlmICghcHJvcGVydHlJRCkgewotICAg
ICAgICBwcm9wZXJ0eVN1cHBvcnRlZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4geyB9OwotICAg
IH0KKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1
dGU8Q1NTUHJvcGVydHlMb29rdXBNb2RlOjpDb252ZXJ0VXNpbmdOb0Rhc2hQcmVmaXg+KGF0dHJp
YnV0ZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5
SW52YWxpZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5
SUQpOworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRy
aWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9v
a3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29u
dmVydFVzaW5nTm9EYXNoUHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTog
JXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHNldFBy
b3BlcnR5SW50ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30KIAotICAgIHByb3Bl
cnR5U3VwcG9ydGVkID0gdHJ1ZTsKLSAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRlcm5hbChwcm9w
ZXJ0eUlELCBXVEZNb3ZlKHZhbHVlKSwgZmFsc2UpOworU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRp
b246OnByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3Ry
aW5nJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlEID0gbG9va3VwQ1NTUHJvcGVy
dHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29udmVydFVzaW5nRGFz
aFByZWZpeD4oYXR0cmlidXRlKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQg
IT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxpZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRl
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlSW50
ZXJuYWwocHJvcGVydHlJRCk7CiB9CiAKLVZlY3RvcjxBdG9tU3RyaW5nPiBDU1NTdHlsZURlY2xh
cmF0aW9uOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkgY29uc3QKK0V4Y2VwdGlvbk9yPHZvaWQ+
IENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0
dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIG51bU5hbWVzID0gMDsKLSAgICBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyogY29uc3QgY3NzUHJvcGVydHlOYW1lcyA9IFt0aGlzXSB7Ci0gICAgICAgIFN0
cmluZyBuYW1lc1tudW1DU1NQcm9wZXJ0aWVzXTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQg
PSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihmaXJzdENTU1Byb3BlcnR5ICsgaSk7Ci0gICAg
ICAgICAgICBpZiAoaXNFbmFibGVkQ1NTUHJvcGVydHkoaWQpICYmIGlzQ1NTUHJvcGVydHlFbmFi
bGVkQnlTZXR0aW5ncyhpZCwgc2V0dGluZ3MoKSkpCi0gICAgICAgICAgICAgICAgbmFtZXNbbnVt
TmFtZXMrK10gPSBnZXRKU1Byb3BlcnR5TmFtZShpZCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3Rk
Ojpzb3J0KCZuYW1lc1swXSwgJm5hbWVzW251bU5hbWVzXSwgV1RGOjpjb2RlUG9pbnRDb21wYXJl
TGVzc1RoYW4pOwotICAgICAgICBhdXRvKiBpZGVudGlmaWVycyA9IG5ldyBBdG9tU3RyaW5nW251
bU5hbWVzXTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU5hbWVzOyArK2kp
Ci0gICAgICAgICAgICBpZGVudGlmaWVyc1tpXSA9IG5hbWVzW2ldOwotICAgICAgICByZXR1cm4g
aWRlbnRpZmllcnM7Ci0gICAgfSgpOworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1By
b3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2lu
Z0Rhc2hQcmVmaXg+KGF0dHJpYnV0ZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0
eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJp
YnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eUlELCB2YWx1ZSwgZmFsc2UpOworfQogCi0gICAgVmVjdG9yPEF0b21TdHJp
bmc+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1OYW1lcyk7
CitTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0
dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBwcm9wZXJ0
eUlEID0gbG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3Vw
TW9kZTo6Tm9Db252ZXJzaW9uPihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
cHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMi
LCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdldFByb3Bl
cnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKK30KIAotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1OYW1lczsgKytpKQotICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGNz
c1Byb3BlcnR5TmFtZXNbaV0pOworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6c2V0UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5n
JiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlE
ID0gbG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9k
ZTo6Tm9Db252ZXJzaW9uPihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJv
cGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBh
dHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHNldFByb3BlcnR5
SW50ZXJuYWwocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlKTsKK30KIAotICAgIHJldHVybiByZXN1
bHQ7CitTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckVwdWJDYXNl
ZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBw
cm9wZXJ0eUlEID0gbG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5
TG9va3VwTW9kZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeD4oYXR0cmlidXRlKTsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxp
ZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwocHJvcGVydHlJRCk7Cit9CisKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JFcHVi
Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQoreworICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENTU1Byb3BlcnR5RnJv
bUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRVc2luZ0Rhc2hQcmVm
aXg+KGF0dHJpYnV0ZSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENT
U1Byb3BlcnR5SW52YWxpZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRlcm5hbChwcm9w
ZXJ0eUlELCB2YWx1ZSwgZmFsc2UpOwogfQotI2VuZGlmCiAKIFN0cmluZyBDU1NTdHlsZURlY2xh
cmF0aW9uOjpjc3NGbG9hdCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmgJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZURlY2xhcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEyICs3NCwyNSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OwogCi0j
aWYgIUVOQUJMRShBVFRSSUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xB
UkFUSU9OKQotICAgIC8vIE5hbWVkLWl0ZW0gYmFzZWQgaW1wbGVtZW50YXRpb24gc3VwcG9ydC4K
LSAgICBPcHRpb25hbDxWYXJpYW50PFN0cmluZywgZG91YmxlPj4gbmFtZWRJdGVtKGNvbnN0IEF0
b21TdHJpbmcmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROYW1lZEl0ZW0oY29uc3QgQXRv
bVN0cmluZyYgbmFtZSwgU3RyaW5nIHZhbHVlLCBib29sJiBwcm9wZXJ0eVN1cHBvcnRlZCk7Ci0g
ICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBjb25zdDsKLSNl
bmRpZgorICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCwgYnkgdmlydHVl
IG9mIGF2b2lkaW5nIHRoZSB0ZXh0IHRyYW5zZm9ybWF0aW9uIGFuZCBoYXNoIGxvb2t1cCBjdXJy
ZW50bHkKKyAgICAvLyByZXF1aXJlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24sIGlmIHdlIGNvdWxk
IGNvdWxkIHNtdWdnbGUgdGhlIENTU1Byb3BlcnR5SUQgdGhyb3VnaCB0aGUgYmluZGluZ3MsIHBl
cmhhcHMKKyAgICAvLyBieSBlbmNvZGluZyBpdCBpbnRvIHRoZSBIYXNoVGFibGVWYWx1ZSBhbmQg
dGhlbiBwYXNzaW5nIGl0IHRvZ2V0aGVyIHdpdGggdGhlIFByb3BlcnR5TmFtZS4KKworICAgIC8v
IFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLWNhbWVs
X2Nhc2VkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcgcHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJ
RExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxs
IHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2Rv
bS1jc3NzdHlsZWRlY2xhcmF0aW9uLXdlYmtpdF9jYXNlZF9hdHRyaWJ1dGUuCisgICAgU3RyaW5n
IHByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5n
Jik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2Vk
SURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIC8v
IFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHByb3BlcnRpZXMgdGhhdCBtYXRjaCBodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI2RvbS1jc3NzdHlsZWRlY2xhcmF0aW9uLWRhc2hl
ZF9hdHRyaWJ1dGUuCisgICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1
dGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5
VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpOworCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJvcGVydGllcyB0
aGF0IG1hdGNoIG5vbi1zdGFuZGFyZCBFcHViLWNhc2VkLgorICAgIFN0cmluZyBwcm9wZXJ0eVZh
bHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIHRvIHBhc3MgaW4gYSBTZXR0aW5ncyYgdG8gd29yayBjb3JyZWN0bHkuCiAgICAgc3RhdGlj
IENTU1Byb3BlcnR5SUQgZ2V0Q1NTUHJvcGVydHlJREZyb21KYXZhU2NyaXB0UHJvcGVydHlOYW1l
KGNvbnN0IEF0b21TdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURl
Y2xhcmF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5pZGwJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsNiBAQAog
ICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogICAg
IEV4cG9zZWQ9V2luZG93LAotI2lmICFkZWZpbmVkKEVOQUJMRV9BVFRSSUJVVEVfQkFTRURfUFJP
UEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSB8fCAhRU5BQkxFX0FUVFJJQlVURV9C
QVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04KLSAgICBEZWZhdWx0RGVm
aW5lT3duUHJvcGVydHkKLSNlbmRpZgogXSBpbnRlcmZhY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7
CiAgICAgLy8gRklYTUU6IFRoZXNlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBzaG91bGQgdXNl
IENTU09NU3RyaW5nIG5vdCBET01TdHJpbmcuCiAKQEAgLTQ2LDEyICs0Myw0IEBACiAgICAgRE9N
U3RyaW5nPyBnZXRQcm9wZXJ0eVNob3J0aGFuZChvcHRpb25hbCBET01TdHJpbmcgcHJvcGVydHlO
YW1lKTsKICAgICBib29sZWFuIGlzUHJvcGVydHlJbXBsaWNpdChvcHRpb25hbCBET01TdHJpbmcg
cHJvcGVydHlOYW1lKTsKICAgICBEZXByZWNhdGVkQ1NTT01WYWx1ZT8gZ2V0UHJvcGVydHlDU1NW
YWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKLQotI2lmICFkZWZpbmVkKEVOQUJMRV9BVFRS
SUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSB8fCAhRU5B
QkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04K
LSAgICAvLyBVc2UgbmFtZWQgZ2V0dGVycy9zZXR0ZXJzIGZvciBhbGwgc3VwcG9ydCBDU1MgcHJv
cGVydHkgbmFtZXMuIFRoZSBzcGVjIHNheXMKLSAgICAvLyB0aGVzZSBzaG91bGQgYmUgbm9ybWFs
IGF0dHJpYnV0ZXMsIGJ1dCB0aGVyZSBhcmUgdG9vIG1hbnkgY29tYmluYXRpb25zIHdpdGgKLSAg
ICAvLyBwcmVmaXhlcyBmb3IgdGhpcyB0byBiZSBwcmFjdGljYWwgd2l0aCBjdXJyZW50IGNvZGUg
Z2VuZXJhdGlvbi4KLSAgICBnZXR0ZXIgKERPTVN0cmluZyBvciBkb3VibGUpIChET01TdHJpbmcg
bmFtZSk7Ci0gICAgW0NFUmVhY3Rpb25zLCBDYWxsTmFtZWRTZXR0ZXJPbmx5Rm9yU3VwcG9ydGVk
UHJvcGVydGllc10gc2V0dGVyIHVuZGVmaW5lZCAoRE9NU3RyaW5nIG5hbWUsIFtMZWdhY3lOdWxs
VG9FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlKTsKLSNlbmRpZgogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvbWFrZXByb3AucGwJKHJldmlzaW9uIDI3NTc5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9t
YWtlcHJvcC5wbAkod29ya2luZyBjb3B5KQpAQCAtMTQwOSw4ICsxNDA5LDYgQEAgdHlwZWRlZiBV
U1ZTdHJpbmcgQ1NTT01TdHJpbmc7CiAKIHBhcnRpYWwgaW50ZXJmYWNlIENTU1N0eWxlRGVjbGFy
YXRpb24gewogCi0jaWYgZGVmaW5lZChFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNf
Rk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikgJiYgRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9Q
RVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04KLQogRU9GCiAKIHByaW50IENTU19TVFlM
RV9ERUNMQVJBVElPTl9QUk9QRVJUWV9OQU1FU19JREwgPDwgIkVPRiI7CkBAIC0xNDI3LDcgKzE0
MjUsNyBAQCBmb3JlYWNoIG15ICRuYW1lT3JBbGlhcyAoQG5hbWVzQW5kQWxpYXNlCiAgICAgbXkg
JG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkgJHBy
b3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OwogCi0g
ICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5
SWR9Iik7CisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0cmli
dXRlIiwgIkNhbGxXaXRoPVByb3BlcnR5TmFtZSIpOwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmli
dXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9fSIpIGlm
ICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVl
cywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRydW50aW1l
RmxhZ3N7JG5hbWV9OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIsICIsIEBl
eHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CkBAIC0xNDUwLDcgKzE0NDgsNyBAQCBmb3JlYWNoIG15
ICRuYW1lT3JBbGlhcyAoZ3JlcCB7ICRfID1+IC9eCiAgICAgbXkgJG5hbWUgPSAkbmFtZXNBbmRB
bGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkgJHByb3BlcnR5SWQgPSAkbmFtZVRv
SWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OwogCi0gICAgbXkgQGV4dGVuZGVkQXR0
cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAgbXkgQGV4
dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlPXByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0ZSIsICJDYWxsV2l0aD1Q
cm9wZXJ0eU5hbWUiKTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJs
ZWRCeVNldHRpbmc9JHtzZXR0aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0dGluZ3NGbGFnc3sk
bmFtZX07CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQXRSdW50
aW1lPSR7cnVudGltZUZsYWdzeyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdzeyRuYW1lfTsKICAg
ICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5kZWRBdHRyaWJ1dGVW
YWx1ZXMpOwpAQCAtMTQ3Miw3ICsxNDcwLDcgQEAgZm9yZWFjaCBteSAkbmFtZU9yQWxpYXMgKGdy
ZXAgeyAkXyA9fiAvXAogICAgIG15ICRuYW1lID0gJG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFt
ZU9yQWxpYXN9OwogICAgIG15ICRwcm9wZXJ0eUlkID0gJG5hbWVUb0lkeyRuYW1lc0FuZEFsaWFz
ZXNUb05hbWV7JG5hbWV9fTsKIAotICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyA9ICgi
Q1NTUHJvcGVydHk9JHtwcm9wZXJ0eUlkfSIpOworICAgIG15IEBleHRlbmRlZEF0dHJpYnV0ZVZh
bHVlcyA9ICgiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1wcm9wZXJ0eVZhbHVl
Rm9yRGFzaGVkSURMQXR0cmlidXRlIiwgIkNhbGxXaXRoPVByb3BlcnR5TmFtZSIpOwogICAgIHB1
c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdz
RmxhZ3N7JG5hbWV9fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKICAgICBwdXNoKEBleHRl
bmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5h
bWV9fSIpIGlmICRydW50aW1lRmxhZ3N7JG5hbWV9OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0
ZXMgPSBqb2luKCIsICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CkBAIC0xNDk0LDcgKzE0
OTIsNyBAQCBmb3JlYWNoIG15ICRuYW1lT3JBbGlhcyAoZ3JlcCB7ICRfID1+IC9eCiAgICAgbXkg
JG5hbWUgPSAkbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkgJHBy
b3BlcnR5SWQgPSAkbmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OwogCi0g
ICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5
SWR9Iik7CisgICAgbXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1
dGUiLCAiQ2FsbFdpdGg9UHJvcGVydHlOYW1lIik7CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1
dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYg
JHNldHRpbmdzRmxhZ3N7JG5hbWV9OwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVz
LCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVG
bGFnc3skbmFtZX07CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4
dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKQEAgLTE1MDMsOCArMTUwMSw2IEBAIGZvcmVhY2ggbXkg
JG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL14KIH0KIAogcHJpbnQgQ1NTX1NUWUxFX0RFQ0xB
UkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8PCAiRU9GIjsKLQotI2VuZGlmCiB9OwogCiBFT0YK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NTc5OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA0LTEwICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkg
c2l6ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5
IGFjY2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxl
LWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9z
dHlsZS1lbnVtZXJhdGUtcHJvcGVydGllcy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL2RvbUxp
c3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vZG9tTGlzdEVu
dW1lcmF0aW9uLmh0bWw6CisgICAgICAgIFJlbW92ZSBleGlzdGluZyB0ZXN0cyBmb3IgaXRlcmF0
aW9uIG9yZGVyLCB3aGljaCBpcyBub3Qgc3RhbmRhcmRpemVkLCBhbmQgbm90IGNvbnNpc3RlbnQg
YW1vbmcKKyAgICAgICAgYnJvd3NlcnMuIEFkZHMgYSBuZXcgb25lIHRoYXQgY2hlY2tzIGludmFy
aWFudHMgb2YgdGhlIDQgZ3JvdXBpbmdzIG9mIHByb3BlcnRpZXMgd2hpY2ggd2UgY3VycmVudGx5
CisgICAgICAgIGV4cGVjdCB0byBob2xkLCBhdCBsZWFzdCBpbiBvdXIgaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgKiBmYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFy
YXRpb24tcHJvcGVydGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1k
ZXNjcmlwdG9yLmh0bWw6CisgICAgICAgIFVwZGF0ZSBub3cgdGhhdCB0aGUgcHJvcGVydGllcyBh
cmUgcHJvcGVyIGF0dHJpYnV0ZXMgb24gdGhlIHByb3RvdHlwZS4KKworICAgICAgICAqIGpzL2Rv
bS9wdXQtb3ZlcnJpZGUtc2hvdWxkLW5vdC11c2UtaWMuaHRtbDoKKyAgICAgICAgU3dpdGNoIHRv
IHVzaW5nIGEgRE9NU3RyaW5nTGlzdCBhcyB0aGUgb2JqZWN0IHRoYXQgb3ZlcnJpZGVzIHB1dCwg
c2luY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiBubyBsb25nZXIgZG9lcy4KKworICAgICAgICAqIHRy
YW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHRy
YW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmcuaHRtbDoKKyAgICAgICAgUmVtb3ZlIE9iamVj
dC5rZXlzKCkgYXNwZWN0IG9mIHRoZSB0ZXN0LCB3aGljaCBpcyBubyBsb25nZXIgbWVhbmluZ2Z1
bCBzaW5jZSB0aGUKKyAgICAgICAgcHJvcGVydGllcyBzaG91bGQgbm8gbG9uZ2VyIGV4aXN0IGlu
IHRoZSByZXN1bHQgc2V0LgorCiAyMDIxLTA0LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBdIDMgd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4
dC8gbGF5b3V0LXRlc3RzIGFyZSBmbGFrZXkgdGV4dCBmYWlsdXJlcwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1Nzk5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMSw3ICsxMSwzMiBAQCBQQVNTICdXZWJraXRUcmFuc2Zvcm0nIGluIGRvY3VtZW50LmJvZHku
CiBQQVNTICdib2d1cy1yYW5kb20tU3RyaW5nJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIGlzIGZh
bHNlCiBQQVNTICdjc3NUZXh0JyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIGlzIHRydWUKIFBBU1Mg
J2dldFByb3BlcnR5Q1NTVmFsdWUnIGluIGRvY3VtZW50LmJvZHkuc3R5bGUgaXMgdHJ1ZQotUEFT
UyBUaGUgQ1NTIHByb3BlcnR5IG9yZGVyIGlzIGNvcnJlY3QKK1BBU1MgaW5pdGlhbEluZGV4T2ZH
cm91cDIgPiBpbml0aWFsSW5kZXhPZkdyb3VwMSBpcyB0cnVlCitQQVNTIGluaXRpYWxJbmRleE9m
R3JvdXAzID4gaW5pdGlhbEluZGV4T2ZHcm91cDIgaXMgdHJ1ZQorUEFTUyBpbml0aWFsSW5kZXhP
Zkdyb3VwNCA+IGluaXRpYWxJbmRleE9mR3JvdXAzIGlzIHRydWUKK1BBU1MgaW5pdGlhbEluZGV4
T2ZHcm91cDUgPiBpbml0aWFsSW5kZXhPZkdyb3VwNCBpcyB0cnVlCitQQVNTIGluaXRpYWxJbmRl
eE9mR3JvdXA2ID4gaW5pdGlhbEluZGV4T2ZHcm91cDUgaXMgdHJ1ZQorUEFTUyBncm91cDEgaXMg
WyIwIiwgIjEiLCAiY3NzVGV4dCIsICJsZW5ndGgiLCAicGFyZW50UnVsZSIsICJjc3NGbG9hdCJd
CitQQVNTIGdyb3VwMiBpcyBncm91cDJDbG9uZQorUEFTUyBncm91cDIuc29tZShwcm9wZXJ0eSA9
PiBwcm9wZXJ0eS5zdGFydHNXaXRoKCJXZWJraXQiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDIuc29t
ZShwcm9wZXJ0eSA9PiBwcm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikpIGlzIHRydWUKK1BBU1Mg
Z3JvdXAyLmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5pbmNsdWRlcygiLSIpKSBpcyB0cnVl
CitQQVNTIGdyb3VwMyBpcyBncm91cDNDbG9uZQorUEFTUyBncm91cDMuZXZlcnkocHJvcGVydHkg
PT4gIXByb3BlcnR5LnN0YXJ0c1dpdGgoIldlYmtpdCIpKSBpcyB0cnVlCitQQVNTIGdyb3VwMy5l
dmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgiRXB1YiIpKSBpcyB0cnVlCitQ
QVNTIGdyb3VwMy5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuaW5jbHVkZXMoIi0iKSkgaXMg
dHJ1ZQorUEFTUyBncm91cDMuZXZlcnkocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgi
d2Via2l0IikpIGlzIHRydWUKK1BBU1MgZ3JvdXA0IGlzIGdyb3VwNENsb25lCitQQVNTIGdyb3Vw
NC5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgiV2Via2l0IikpIGlzIHRy
dWUKK1BBU1MgZ3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJF
cHViIikpIGlzIHRydWUKK1BBU1MgZ3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5z
dGFydHNXaXRoKCJ3ZWJraXQiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDQuZXZlcnkocHJvcGVydHkg
PT4gcHJvcGVydHkuaW5jbHVkZXMoIi0iKSkgaXMgdHJ1ZQorUEFTUyBncm91cDUgaXMgZ3JvdXA1
Q2xvbmUKK1BBU1MgZ3JvdXA1LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRo
KCJXZWJraXQiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDUuZXZlcnkocHJvcGVydHkgPT4gIXByb3Bl
cnR5LnN0YXJ0c1dpdGgoIkVwdWIiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDUuZXZlcnkocHJvcGVy
dHkgPT4gIXByb3BlcnR5LmluY2x1ZGVzKCItIikpIGlzIHRydWUKK1BBU1MgZ3JvdXA1LmV2ZXJ5
KHByb3BlcnR5ID0+IHByb3BlcnR5LnN0YXJ0c1dpdGgoImVwdWIiKSkgaXMgdHJ1ZQorUEFTUyBn
cm91cDYgaXMgWyJpdGVtIiwgImdldFByb3BlcnR5VmFsdWUiLCAiZ2V0UHJvcGVydHlQcmlvcml0
eSIsICJzZXRQcm9wZXJ0eSIsICJyZW1vdmVQcm9wZXJ0eSIsICJnZXRQcm9wZXJ0eVNob3J0aGFu
ZCIsICJpc1Byb3BlcnR5SW1wbGljaXQiLCAiZ2V0UHJvcGVydHlDU1NWYWx1ZSJdCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMuaHRtbAko
cmV2aXNpb24gMjc1Nzk5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRl
LXByb3BlcnRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxMyBAQAogPGhlYWQ+
CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLQotICAgIDwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHkgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBib3JkZXItdG9wLWNv
bG9yOiBncmVlbiI+CiAgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdCBtYWtlcyBz
dXJlIHRoYXQgQ1NTU3R5bGVEZWNsYXJhdGlvbiBlbnVtZXJhdGVzIEphdmFTY3JpcHQgcHJvcGVy
dGllcyBmb3IgZGVmaW5lZCBhbmQgbm9uLWRlZmluZWQgQ1NTIHByb3BlcnRpZXMsIGluZGV4ZWQg
cHJvcGVydGllcywgYW5kIHByb3BlcnRpZXMgZGVmaW5lZCBvbiB0aGUgcHJvdG90eXBlLiBTZWUg
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQ2Ij5C
dWcgMjM5NDY8L2E+LjwvZGl2PgogICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogICAgIDxz
Y3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworCiAgICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5ib2R5LnN0
eWxlLmxlbmd0aCIsICIyIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiJzAnIGluIGRvY3VtZW50
LmJvZHkuc3R5bGUiKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCInMScgaW4gZG9jdW1lbnQuYm9k
eS5zdHlsZSIpOwpAQCAtMjMsMzMgKzIwLDg1IEBACiAgICAgICAgIHNob3VsZEJlRmFsc2UoIidi
b2d1cy1yYW5kb20tU3RyaW5nJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIik7CiAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgiJ2Nzc1RleHQnIGluIGRvY3VtZW50LmJvZHkuc3R5bGUiKTsKICAgICAgICAg
c2hvdWxkQmVUcnVlKCInZ2V0UHJvcGVydHlDU1NWYWx1ZScgaW4gZG9jdW1lbnQuYm9keS5zdHls
ZSIpOworICAgICAgICAKKyAgICAgICAgLy8gVGVzdCBpbnZhcmlhbnRzIG9uIHRoZSBvcmRlciBv
ZiB0aGUgZW51bWVyYXRlZCBwcm9wZXJ0aWVzLiBUaGVzZSBhcmUgbm90IGluIHRoZSBzcGVjLCBi
dXQgd2UKKyAgICAgICAgLy8gY3VycmVudGx5IGV4cGVjdCB0aGVtIHRvIGhvbGQuCisgICAgICAg
IC8vIC0gNiBncm91cGluZ3MKKyAgICAgICAgLy8uICAtIDFzdCBncm91cGluZyBbMCwgMSwgY3Nz
VGV4dCwgbGVuZ3RoLCBwYXJlbnRSdWxlLCBjc3NGbG9hdF0KKyAgICAgICAgLy8gICAtIDJuZCBn
cm91cGluZywgY2FtZWwgY2FzZSwgYWxwaGFiZXRpY2FsLCBpbmNsdWRlcyBwcm9wZXJ0aWVzIHdp
dGggIldlYmtpdCIgYW5kICJFcHViIiAKKyAgICAgICAgLy8gICAgIHByZWZpeCB3aXRoIGluaXRp
YWwgdXBwZXJjYXNlIGxldHRlciwgbm8gZGFzaGVzIGFueXdoZXJlIGluIHRoZSBuYW1lCisgICAg
ICAgIC8vICAgLSAzbmQgZ3JvdXBpbmcsIHdlYmtpdCBjYXNlLCBhbHBoYWJldGljYWwsIGFsbCBw
cm9wZXJ0aWVzIHByZWZpeGVkIHdpdGggIndlYmtpdCIgd2l0aAorICAgICAgICAvLyAgICAgaW5p
dGlhbCBsb3dlcmNhc2UgbGV0dGVyICd3Jy4KKyAgICAgICAgLy8gICAtIDR0aCBncm91cGluZywg
ZGFzaGVkIGNhc2UsIGFscGhhYmV0aWNhbCwgYWxsIHByb3BlcnRpZXMgaGF2ZSBhIGRhc2ggaW4g
dGhlbS4KKyAgICAgICAgLy8gICAtIDV0aCBncm91cGluZywgZXB1YiBjYXNlLCBhbHBoYWJldGlj
YWwsIGFsbCBwcm9wZXJ0aWVzIHByZWZpeGVkIHdpdGggImVwdWIiIHdpdGggCisgICAgICAgIC8v
ICAgICBpbml0aWFsIGxvd2VyY2FzZSBsZXR0ZXIgJ2UnLgorICAgICAgICAvLyAgIC0gNnRoIGdy
b3VwaW5nLCBbaXRlbSwgZ2V0UHJvcGVydHlWYWx1ZSwgZ2V0UHJvcGVydHlQcmlvcml0eSwgc2V0
UHJvcGVydHksIHJlbW92ZVByb3BlcnR5LCAKKyAgICAgICAgLy8gICAgIGdldFByb3BlcnR5U2hv
cnRoYW5kLCBpc1Byb3BlcnR5SW1wbGljaXQsIGdldFByb3BlcnR5Q1NTVmFsdWVdCisKKyAgICAg
ICAgbGV0IHByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBkb2N1bWVudC5i
b2R5LnN0eWxlKQorICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKHApOworCisgICAgICAgIGxl
dCBpbml0aWFsSW5kZXhPZkdyb3VwMSA9IDA7CisgICAgICAgIGxldCBpbml0aWFsSW5kZXhPZkdy
b3VwMiA9IHByb3BlcnRpZXMuZmluZEluZGV4KHByb3BlcnR5ID0+IHByb3BlcnR5ID09ICJjc3NG
bG9hdCIpICsgMTsKKyAgICAgICAgbGV0IGluaXRpYWxJbmRleE9mR3JvdXAzID0gcHJvcGVydGll
cy5maW5kSW5kZXgocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgid2Via2l0IikpOwor
ICAgICAgICBsZXQgaW5pdGlhbEluZGV4T2ZHcm91cDQgPSBwcm9wZXJ0aWVzLmZpbmRJbmRleChw
cm9wZXJ0eSA9PiBwcm9wZXJ0eS5pbmNsdWRlcygiLSIpKTsKKyAgICAgICAgbGV0IGluaXRpYWxJ
bmRleE9mR3JvdXA1ID0gcHJvcGVydGllcy5maW5kSW5kZXgocHJvcGVydHkgPT4gcHJvcGVydHku
c3RhcnRzV2l0aCgiZXB1YiIpKTsKKyAgICAgICAgbGV0IGluaXRpYWxJbmRleE9mR3JvdXA2ID0g
cHJvcGVydGllcy5maW5kSW5kZXgocHJvcGVydHkgPT4gcHJvcGVydHkgPT0gIml0ZW0iKTsKKwor
ICAgICAgICBzaG91bGRCZVRydWUoImluaXRpYWxJbmRleE9mR3JvdXAyID4gaW5pdGlhbEluZGV4
T2ZHcm91cDEiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpbml0aWFsSW5kZXhPZkdyb3VwMyA+
IGluaXRpYWxJbmRleE9mR3JvdXAyIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5pdGlhbElu
ZGV4T2ZHcm91cDQgPiBpbml0aWFsSW5kZXhPZkdyb3VwMyIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImluaXRpYWxJbmRleE9mR3JvdXA1ID4gaW5pdGlhbEluZGV4T2ZHcm91cDQiKTsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJpbml0aWFsSW5kZXhPZkdyb3VwNiA+IGluaXRpYWxJbmRleE9mR3Jv
dXA1Iik7CisKKyAgICAgICAgbGV0IGdyb3VwMSA9IHByb3BlcnRpZXMuc2xpY2UoaW5pdGlhbElu
ZGV4T2ZHcm91cDEsIGluaXRpYWxJbmRleE9mR3JvdXAyKTsKKyAgICAgICAgbGV0IGdyb3VwMiA9
IHByb3BlcnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91cDIsIGluaXRpYWxJbmRleE9mR3Jv
dXAzKTsKKyAgICAgICAgbGV0IGdyb3VwMyA9IHByb3BlcnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4
T2ZHcm91cDMsIGluaXRpYWxJbmRleE9mR3JvdXA0KTsKKyAgICAgICAgbGV0IGdyb3VwNCA9IHBy
b3BlcnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91cDQsIGluaXRpYWxJbmRleE9mR3JvdXA1
KTsKKyAgICAgICAgbGV0IGdyb3VwNSA9IHByb3BlcnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZH
cm91cDUsIGluaXRpYWxJbmRleE9mR3JvdXA2KTsKKyAgICAgICAgbGV0IGdyb3VwNiA9IHByb3Bl
cnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91cDYpOworCisgICAgICAgIC8vIEdyb3VwIDEK
KyAgICAgICAgc2hvdWxkQmUoYGdyb3VwMWAsIGBbIjAiLCAiMSIsICJjc3NUZXh0IiwgImxlbmd0
aCIsICJwYXJlbnRSdWxlIiwgImNzc0Zsb2F0Il1gKTsKKworICAgICAgICAvLyBHcm91cCAyIC0g
Q2FtZWwgQ2FzZQorICAgICAgICBsZXQgZ3JvdXAyQ2xvbmUgPSBbLi4uZ3JvdXAyXTsKKyAgICAg
ICAgZ3JvdXAyQ2xvbmUuc29ydCgpOworICAgICAgICBzaG91bGRCZSgiZ3JvdXAyIiwgImdyb3Vw
MkNsb25lIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXAyLnNvbWUocHJvcGVydHkgPT4g
cHJvcGVydHkuc3RhcnRzV2l0aCgiV2Via2l0IikpYCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZShg
Z3JvdXAyLnNvbWUocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgiRXB1YiIpKWApOwor
ICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwMi5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHku
aW5jbHVkZXMoIi0iKSlgKTsKKworICAgICAgICAvLyBHcm91cCAzIC0gV2ViS2l0IENhc2UKKyAg
ICAgICAgbGV0IGdyb3VwM0Nsb25lID0gWy4uLmdyb3VwM107CisgICAgICAgIGdyb3VwM0Nsb25l
LnNvcnQoKTsKKyAgICAgICAgc2hvdWxkQmUoImdyb3VwMyIsICJncm91cDNDbG9uZSIpOworICAg
ICAgICBzaG91bGRCZVRydWUoYGdyb3VwMy5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3Rh
cnRzV2l0aCgiV2Via2l0IikpYCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXAzLmV2ZXJ5
KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikpYCk7CisgICAgICAgIHNo
b3VsZEJlVHJ1ZShgZ3JvdXAzLmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5pbmNsdWRlcygi
LSIpKWApOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwMy5ldmVyeShwcm9wZXJ0eSA9PiBw
cm9wZXJ0eS5zdGFydHNXaXRoKCJ3ZWJraXQiKSlgKTsKKworICAgICAgICAvLyBHcm91cCA0IC0g
RGFzaGVkIENhc2UKKyAgICAgICAgbGV0IGdyb3VwNENsb25lID0gWy4uLmdyb3VwNF07CisgICAg
ICAgIGdyb3VwNENsb25lLnNvcnQoKTsKKyAgICAgICAgc2hvdWxkQmUoImdyb3VwNCIsICJncm91
cDRDbG9uZSIpOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwNC5ldmVyeShwcm9wZXJ0eSA9
PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgiV2Via2l0IikpYCk7CisgICAgICAgIHNob3VsZEJlVHJ1
ZShgZ3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikp
YCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9w
ZXJ0eS5zdGFydHNXaXRoKCJ3ZWJraXQiKSlgKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91
cDQuZXZlcnkocHJvcGVydHkgPT4gcHJvcGVydHkuaW5jbHVkZXMoIi0iKSlgKTsKKworICAgICAg
ICAvLyBHcm91cCA1IC0gRXB1YiBDYXNlCisgICAgICAgIGxldCBncm91cDVDbG9uZSA9IFsuLi5n
cm91cDVdOworICAgICAgICBncm91cDVDbG9uZS5zb3J0KCk7CisgICAgICAgIHNob3VsZEJlKCJn
cm91cDUiLCAiZ3JvdXA1Q2xvbmUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDUuZXZl
cnkocHJvcGVydHkgPT4gIXByb3BlcnR5LnN0YXJ0c1dpdGgoIldlYmtpdCIpKWApOworICAgICAg
ICBzaG91bGRCZVRydWUoYGdyb3VwNS5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRz
V2l0aCgiRXB1YiIpKWApOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwNS5ldmVyeShwcm9w
ZXJ0eSA9PiAhcHJvcGVydHkuaW5jbHVkZXMoIi0iKSlgKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KGBncm91cDUuZXZlcnkocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgiZXB1YiIpKWAp
OwogCi0gICAgICAgIC8vIFRlc3QgQ1NTIHByb3BlcnR5IG9yZGVyLgotICAgICAgICB2YXIgc3Rh
cnRlZDsKLSAgICAgICAgdmFyIGNzc1Byb3BlcnR5Q291bnQgPSAwOwotICAgICAgICB2YXIgcHJl
dmlvdXM7Ci0gICAgICAgIHZhciBzZWVuRmlsdGVyOwotICAgICAgICBmb3IgKHZhciBwIGluIGRv
Y3VtZW50LmJvZHkuc3R5bGUpIHsKLSAgICAgICAgICAgIGlmIChwID09PSAiYWxpZ25tZW50QmFz
ZWxpbmUiKQotICAgICAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYg
KCFzdGFydGVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHAg
PT09ICJmaWx0ZXIiKQotICAgICAgICAgICAgICAgIHNlZW5GaWx0ZXIgPSB0cnVlOwotICAgICAg
ICAgICAgaWYgKHByZXZpb3VzICYmIHByZXZpb3VzID49IHApIHsKLSAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJJbnZhbGlkIENTUy1tYXBwZWQgcHJvcGVydHkgb3JkZXI6ICciICsgcCArICIn
IGFmdGVyICciICsgcHJldmlvdXMgKyAiJyIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCsrY3NzUHJvcGVydHlDb3VudCA8PSA0MDApCi0g
ICAgICAgICAgICAgICAgcHJldmlvdXMgPSBwOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHNlZW5GaWx0ZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
IlRoZSBDU1MgcHJvcGVydHkgb3JkZXIgaXMgY29ycmVjdCIpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGhlICdmaWx0ZXInIHByb3BlcnR5
IHdhcyBub3QgZW51bWVyYXRlZCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CisgICAgICAgIC8vIEdyb3VwIDYKKyAgICAgICAgc2hvdWxkQmUoYGdy
b3VwNmAsIGBbIml0ZW0iLCAiZ2V0UHJvcGVydHlWYWx1ZSIsICJnZXRQcm9wZXJ0eVByaW9yaXR5
IiwgInNldFByb3BlcnR5IiwgInJlbW92ZVByb3BlcnR5IiwgImdldFByb3BlcnR5U2hvcnRoYW5k
IiwgImlzUHJvcGVydHlJbXBsaWNpdCIsICJnZXRQcm9wZXJ0eUNTU1ZhbHVlIl1gKTsKICAgICA8
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0
RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTc5OSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDE0ICs2NSw2IEBAIFBBU1MgcmVzdWx0QXJyYXlbMV0uaXRlbSBp
cyBjc3NSdWxlTGlzdC4KIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKIFBBU1MgcmVzdWx0
QXJyYXlbMl0uaXRlbSBpcyBjc3NSdWxlTGlzdC5pdGVtKDIpCiAKLVtvYmplY3QgQ1NTU3R5bGVE
ZWNsYXJhdGlvbl0KLVBBU1MgcmVzdWx0QXJyYXlbMF0uaSBpcyAnMCcKLVBBU1MgcmVzdWx0QXJy
YXlbMF0uaXRlbSBpcyBjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMCkKLVBBU1MgcmVzdWx0QXJy
YXlbMV0uaSBpcyAnMScKLVBBU1MgcmVzdWx0QXJyYXlbMV0uaXRlbSBpcyBjc3NTdHlsZURlY2xh
cmF0aW9uLml0ZW0oMSkKLVBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKLVBBU1MgcmVzdWx0
QXJyYXlbMl0uaXRlbSBpcyBjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMikKLQogW29iamVjdCBD
U1NWYWx1ZUxpc3RdCiBQQVNTIHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAxMAogUEFTUyByZXN1bHRB
cnJheVswXS5pIGlzICcwJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1l
cmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVu
dW1lcmF0aW9uLmh0bWwJKHJldmlzaW9uIDI3NTc5OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L2RvbUxpc3RFbnVtZXJhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTcgKzE3Nyw2
IEBAIHNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pdGVtIiwgImNzc1J1bGUKIHNob3VsZEJlKCJy
ZXN1bHRBcnJheVsyXS5pIiwgIicyJyIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzJdLml0ZW0i
LCAiY3NzUnVsZUxpc3QuaXRlbSgyKSIpOwogCi0vLyBDU1NTdHlsZURlY2xhcmF0aW9uCi0vL2Rl
YnVnKGVzY2FwZUhUTUwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3N0eWxlJykpKTsK
LXZhciBjc3NTdHlsZURlY2xhcmF0aW9uID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMl0uY3NzUnVs
ZXNbMF0uc3R5bGU7Ci1yZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGNzc1N0eWxlRGVjbGFyYXRp
b24pOwotc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAnIik7Ci1zaG91bGRCZSgicmVz
dWx0QXJyYXlbMF0uaXRlbSIsICJjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMCkiKTsKLXNob3Vs
ZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwgIicxJyIpOwotc2hvdWxkQmUoInJlc3VsdEFycmF5WzFd
Lml0ZW0iLCAiY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDEpIik7Ci1zaG91bGRCZSgicmVzdWx0
QXJyYXlbMl0uaSIsICInMiciKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5pdGVtIiwgImNz
c1N0eWxlRGVjbGFyYXRpb24uaXRlbSgyKSIpOwotCiAvLyBDU1NWYWx1ZUxpc3QKIHZhciBjc3NW
YWx1ZUxpc3QgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnb2wnKVswXSkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLXNwYWNpbmcnKTsK
IHJlc3VsdEFycmF5ID0gaXRlcmF0ZUxpc3QoY3NzVmFsdWVMaXN0KTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9w
ZXJ0aWVzLWRlc2NyaXB0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0
aWVzLWRlc2NyaXB0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU3OTkpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJv
cGVydGllcy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICsz
LDggQEAgVGhpcyB0ZXN0cyB0aGUgZGVzY3JpcHRvciBvZiBDU1NTdHlsZURlYwogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZGVzY3JpcHRvclsnd3JpdGFibGUnXSBpcyB0cnVl
CitQQVNTIGRlc2NyaXB0b3JbJ2dldCddIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNT
IGRlc2NyaXB0b3JbJ3NldCddIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNTIGRlc2Ny
aXB0b3JbJ2VudW1lcmFibGUnXSBpcyB0cnVlCiBQQVNTIGRlc2NyaXB0b3JbJ2NvbmZpZ3VyYWJs
ZSddIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1w
cm9wZXJ0aWVzLWRlc2NyaXB0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1k
ZXNjcmlwdG9yLmh0bWwJKHJldmlzaW9uIDI3NTc5OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2Ny
aXB0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDkgQEAKICAgICA8c2NyaXB0Pgog
ICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgZGVzY3JpcHRvciBvZiBDU1NTdHls
ZURlY2xhcmF0aW9uIHByb3BlcnRpZXMuIik7CiAKLSAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRvY3VtZW50LmJvZHkuc3R5bGUsICdjb2xv
cicpOwotICAgICAgICBzaG91bGRCZVRydWUoImRlc2NyaXB0b3JbJ3dyaXRhYmxlJ10iKTsKKyAg
ICAgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRv
Y3VtZW50LmJvZHkuc3R5bGUuX19wcm90b19fLCAnY29sb3InKTsKKyAgICAgICAgc2hvdWxkQmVU
eXBlKCJkZXNjcmlwdG9yWydnZXQnXSIsICJGdW5jdGlvbiIpOworICAgICAgICBzaG91bGRCZVR5
cGUoImRlc2NyaXB0b3JbJ3NldCddIiwgIkZ1bmN0aW9uIik7CiAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZGVzY3JpcHRvclsnZW51bWVyYWJsZSddIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZGVz
Y3JpcHRvclsnY29uZmlndXJhYmxlJ10iKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1Nzk5KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTA0LTEwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2Ug
Y29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NT
dHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFjY2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3Nzc3R5bGVkZWNsYXJhdGlv
bi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHRlc3QgcmVzdWx0IG5v
dyB0aGF0IGl0IGlzIHBhc3NpbmcuCisKIDIwMjEtMDQtMDkgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY2FsYygpIHNpbXBsaWZpY2F0aW9uIGZvciBhIG11
bHRpcGxpY2F0aW9uIHNob3VsZCBhcHBseSB0aGUgbXVsdGlwbGljYXRpb24gdG8gZWFjaCB2YWx1
ZSBvZiBhbiBhZGRpdGlvbgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb21wYXQvY3NzLXN0eWxlLWRlY2xhcmF0aW9uLWFsaWFzLWVudW1lcmF0aW9u
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9jc3Mtc3R5bGUtZGVjbGFyYXRpb24tYWxpYXMtZW51bWVy
YXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU3OTkpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbXBhdC9jc3Mtc3R5bGUtZGVjbGFyYXRpb24t
YWxpYXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MyBAQAogCi1GQUlMIEFsaWFzZXMgZW51bWVyYXRlZCBvbiBDU1NTdHlsZURlY2xhcmF0aW9uIGFz
c2VydF90cnVlOiBBbGlhcyB3ZWJraXRUcmFuc2Zvcm0gc2VlbiBleHBlY3RlZCB0cnVlIGdvdCBm
YWxzZQorUEFTUyBBbGlhc2VzIGVudW1lcmF0ZWQgb24gQ1NTU3R5bGVEZWNsYXJhdGlvbgogCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Nv
bS9jc3NzdHlsZWRlY2xhcmF0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29t
L2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
NTc5OSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzc29tL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgQ1NTIFRlc3Q6IENTU1N0eWxlRGVjbGFy
YXRpb24gcHJvcGVydGllcyBhcmUgZGVmaW5lZCBhcyBXZWJJREwgYXR0cmlidXRlcywgbm90IHVz
aW5nIGdldE93blByb3BlcnR5TmFtZXMoKSBhc3NlcnRfZmFsc2U6IHNob3VsZG4ndCBoYXZlIGFu
IG93biBwcm9wZXJ0eSBmb3IgV2ViSURMIGF0dHJpYnV0ZXMgZXhwZWN0ZWQgZmFsc2UgZ290IHRy
dWUKK1BBU1MgQ1NTIFRlc3Q6IENTU1N0eWxlRGVjbGFyYXRpb24gcHJvcGVydGllcyBhcmUgZGVm
aW5lZCBhcyBXZWJJREwgYXR0cmlidXRlcywgbm90IHVzaW5nIGdldE93blByb3BlcnR5TmFtZXMo
KQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNl
LWljLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL3B1dC1vdmVycmlkZS1z
aG91bGQtbm90LXVzZS1pYy5odG1sCShyZXZpc2lvbiAyNzU3OTkpCisrKyBMYXlvdXRUZXN0cy9q
cy9kb20vcHV0LW92ZXJyaWRlLXNob3VsZC1ub3QtdXNlLWljLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTgsMTAgKzgsMTAgQEAKIDxzY3JpcHQ+CiAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICAg
ICAgZnVuY3Rpb24gdHJhbnNpdGlvbmVkKCkgewotICAgICAgICAgICAgc3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdwJykuc3R5bGU7CisgICAgICAgICAgICBkYXRhc2V0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgncCcpLmRhdGFzZXQ7CiAgICAgICAgICAgICBmb3IodmFyIGkgPSAw
OyBpIDwgMjA7IGkrKykKLSAgICAgICAgICAgICAgICBzdHlsZVsncCcraV0gPSBpOwotICAgICAg
ICAgICAgcmV0dXJuIHN0eWxlOworICAgICAgICAgICAgICAgIGRhdGFzZXRbJ3AnK2ldID0gaTsK
KyAgICAgICAgICAgIHJldHVybiBkYXRhc2V0OwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rp
b24gcHV0dGVyKG8pIHsKSW5kZXg6IExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25z
LXBhcnNpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRp
b25zL3RyYW5zaXRpb25zLXBhcnNpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU3OTkpCisr
KyBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQQogVmFsaWQgdHJhbnNpdGlvbi1wcm9wZXJ0eSB2YWx1ZXMuCiBQQVNT
IGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3BlcnR5IGlzICdhbGwnCiBQQVNTIGNvbXB1dGVk
U3R5bGUud2Via2l0VHJhbnNpdGlvblByb3BlcnR5IGlzICdhbGwnCi1QQVNTIE9iamVjdC5rZXlz
KHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uUHJvcGVydHknKSBpcyBub3QgLTEKLVBBU1MgT2Jq
ZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eScpIGlzIC0x
CiBQQVNTIHN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eSBpcyAnbm9uZScKIFBBU1MgY29tcHV0ZWRT
dHlsZS50cmFuc2l0aW9uUHJvcGVydHkgaXMgJ25vbmUnCiBQQVNTIHN0eWxlLndlYmtpdFRyYW5z
aXRpb25Qcm9wZXJ0eSBpcyAnbm9uZScKQEAgLTEwMCw4ICs5OCw2IEBAIFBBU1MgY29tcHV0ZWRT
dHlsZS53ZWJraXRUcmFuc2l0aW9uUHJvcGUKIFZhbGlkIHRyYW5zaXRpb24tZHVyYXRpb24gdmFs
dWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiBpcyAnMHMnCiBQQVNT
IGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIGlzICcwcycKLVBBU1MgT2Jq
ZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25EdXJhdGlvbicpIGlzIG5vdCAtMQot
UEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9u
JykgaXMgLTEKIFBBU1Mgc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uIGlzICcwcycKIFBBU1MgY29t
cHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwogUEFTUyBzdHlsZS53ZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwpAQCAtMTUwLDggKzE0Niw2IEBAIFBBU1MgY29tcHV0
ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXQKIFZhbGlkIHRyYW5zaXRpb24tdGltaW5nLWZ1
bmN0aW9uIHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rp
b24gaXMgJ2Vhc2UnCiBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uIGlzICdlYXNlJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uJykgaXMgbm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5p
bmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24nKSBpcyAtMQogUEFTUyBzdHls
ZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhcicKIFBBU1MgY29tcHV0ZWRTdHls
ZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhcicKIFBBU1Mgc3R5bGUud2Via2l0
VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXInCkBAIC0zMDAsOCArMjk0LDYgQEAg
UEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1pbgogVmFsaWQgdHJhbnNpdGlv
bi1kZWxheSB2YWx1ZXMuCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbkRlbGF5IGlzICcw
cycKIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRGVsYXkgaXMgJzBzJwotUEFT
UyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvbkRlbGF5JykgaXMgbm90IC0x
Ci1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uRGVsYXkn
KSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uRGVsYXkgaXMgJzBzJwogUEFTUyBjb21wdXRl
ZFN0eWxlLnRyYW5zaXRpb25EZWxheSBpcyAnMHMnCiBQQVNTIHN0eWxlLndlYmtpdFRyYW5zaXRp
b25EZWxheSBpcyAnMHMnCkBAIC0zNTAsOCArMzQyLDYgQEAgUEFTUyBjb21wdXRlZFN0eWxlLndl
YmtpdFRyYW5zaXRpb25EZWxheQogVmFsaWQgdHJhbnNpdGlvbiBzaG9ydGhhbmQgdmFsdWVzLgog
UEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb24gaXMgJ2FsbCAwcyBlYXNlIDBzJwogUEFTUyBj
b21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb24gaXMgJ2FsbCAwcyBlYXNlIDBzJwotUEFTUyBP
YmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvbicpIGlzIG5vdCAtMQotUEFTUyBP
YmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvbicpIGlzIC0xCiBQQVNT
IHN0eWxlLnRyYW5zaXRpb24gaXMgJ25vbmUnCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlv
biBpcyAnbm9uZSAwcyBlYXNlIDBzJwogUEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uIGlzICdu
b25lJwpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBh
cnNpbmcuaHRtbAkocmV2aXNpb24gMjc1Nzk5KQorKysgTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
dHJhbnNpdGlvbnMtcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw2IEBA
IHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25Qcm9wZXIKIHNob3VsZEJlKCJjb21w
dXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSIsICInYWxsJyIpOwogCiBzdHlsZS50
cmFuc2l0aW9uUHJvcGVydHkgPSAibm9uZSI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5
bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25Qcm9wZXJ0eScpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2Jq
ZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eScpIiwgIi0x
Iik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlvblByb3BlcnR5IiwgIidub25lJyIpOwogc2hv
dWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3BlcnR5IiwgIidub25lJyIpOwogc2hv
dWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSIsICInbm9uZSciKTsKQEAgLTE3
Niw4ICsxNzQsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVyYXRpCiBz
aG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24iLCAiJzBzJyIp
OwogCiBzdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSAiMHMiOwotc2hvdWxkTm90QmUoIk9iamVj
dC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0aW9uRHVyYXRpb24nKSIsICItMSIpOwotc2hv
dWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uRHVyYXRp
b24nKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiIsICInMHMn
Iik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRHVyYXRpb24iLCAiJzBzJyIp
Owogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiIsICInMHMnIik7CkBA
IC0yNTYsOCArMjUyLDYgQEAgc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblRpbWlu
Zwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
IiwgIidlYXNlJyIpOwogCiBzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gPSAibGluZWFy
IjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJhbnNpdGlvblRp
bWluZ0Z1bmN0aW9uJykiLCAiLTEiKTsKLXNob3VsZEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5k
ZXhPZignd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJykiLCAiLTEiKTsKIHNob3VsZEJl
KCJzdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2xpbmVhciciKTsKIHNob3VsZEJl
KCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiIsICInbGluZWFyJyIpOwog
c2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiIsICInbGluZWFy
JyIpOwpAQCAtNDg1LDggKzQ3OSw2IEBAIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRp
b25EZWxheSIKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25EZWxheSIs
ICInMHMnIik7CiAKIHN0eWxlLnRyYW5zaXRpb25EZWxheSA9ICIwcyI7Ci1zaG91bGROb3RCZSgi
T2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25EZWxheScpIiwgIi0xIik7Ci1z
aG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25EZWxh
eScpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlvbkRlbGF5IiwgIicwcyciKTsK
IHNob3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSIsICInMHMnIik7CiBzaG91
bGRCZSgic3R5bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5IiwgIicwcyciKTsKQEAgLTU2NSw4ICs1
NTcsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uIiwgIidhCiBzaG91bGRC
ZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uIiwgIidhbGwgMHMgZWFzZSAwcyciKTsK
IAogc3R5bGUudHJhbnNpdGlvbiA9ICJub25lIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhz
dHlsZSkuaW5kZXhPZigndHJhbnNpdGlvbicpIiwgIi0xIik7Ci1zaG91bGRCZSgiT2JqZWN0Lmtl
eXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb24nKSIsICItMSIpOwogc2hvdWxkQmUo
InN0eWxlLnRyYW5zaXRpb24iLCAiJ25vbmUnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50
cmFuc2l0aW9uIiwgIidub25lIDBzIGVhc2UgMHMnIik7CiBzaG91bGRCZSgic3R5bGUud2Via2l0
VHJhbnNpdGlvbiIsICInbm9uZSciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425709</attachid>
            <date>2021-04-11 08:57:14 -0700</date>
            <delta_ts>2021-04-11 10:06:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222518-20210411085713.patch</filename>
            <type>text/plain</type>
            <size>129052</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzU4MDcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA0LTEwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGlsZSB0aW1lIGFuZCBiaW5hcnkgc2l6
ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnR5IGFj
Y2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTEzNjg4Nz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJs
ZS5oOgorICAgICAgICBSZW1vdmUgRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZP
Ul9DU1NfU1RZTEVfREVDTEFSQVRJT04sIGFzIGl0IGlzIG5vdyB0aGUgZGVmYXVsdCBhbmQgb24g
ZXZlcndoZXJlLgorCiAyMDIxLTA0LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFdURiBTb2Z0TGlua2luZyBtYWNyb3MgY2FuIGNhdXNlIGNvbGxpc2lvbnMg
d2l0aCB0aGVpciB0YXJnZXQgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJ
KHJldmlzaW9uIDI3NTgwNykKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzNiwxMCArMzM2LDYgQEAKICNkZWZpbmUgRU5BQkxFX0xBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQgMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfQVRUUklC
VVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTikKLSNkZWZpbmUg
RU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJ
T04gMAotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfTEVUVEVSUFJFU1MpCiAjZGVmaW5l
IEVOQUJMRV9MRVRURVJQUkVTUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3
NTgwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzMCBAQAorMjAyMS0wNC0xMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIGNvbXBpbGUgdGltZSBhbmQgYmluYXJ5IHNpemUgY29zdCBvZiBlbmFi
bGluZyBwcm9wZXIgQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBhY2Nlc3MgYmVoYXZpb3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjUxOAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUxMzY4ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmUtaW1wbGVtZW50IHByb3BlciAobm90IHVzaW5nIG5h
bWVkLWdldHRlcnMpIHN1cHBvcnQgZm9yIHRoZSBDU1NTdHlsZURlY2xhcmF0aW9uIGJpbmRpbmdz
CisgICAgICAgIHVzaW5nIGEgbmV3IERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUg
ZXh0ZW5kZWQgYXR0dHJpYnV0ZSB3aGljaCBhbGxvd3MgSURMIGF0dHJpYnV0ZXMKKyAgICAgICAg
dG8gc2hhcmUgYSBjdXN0b20gZ2V0dGVyIC8gc2V0dGVyIGltcGxlbWVudGF0aW9uIGFuZCBkZWxl
Z2F0ZSB0aGVpciBpbXBsZW1lbnRhdGlvbiB0byBpdC4gV2hlbgorICAgICAgICB1c2luZyB0aGlz
IGZ1bmN0aW9uYWxpdHksIHRoZSBzeW50aGV0aWMgYXR0cmlidXRlJ3MgaW1wbGVtZW50YXRpb24g
aXMgcGFzc2VkIHRoZSBvcmlnaW5hbCBwcm9wZXJ0eQorICAgICAgICBuYW1lIHNvIGl0IGNhbiBp
bXBsZW1lbnQgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBpdC4KKworICAgICAgICBXZSB1c2UgdGhp
cyBmb3IgQ1NTU3R5bGVEZWNsYXJhdGlvbiBieSBicmVha2luZyB0aGUgaHVnZSBsaXN0IG9mIGdl
bmVyYXRlZCBwcm9wZXJ0aWVzIGludG8KKyAgICAgICAgZm91ciBncm91cHMsIGVhY2ggd2l0aCB0
aGVpciBvd24gc3ludGhldGljIGF0dHJpYnV0ZS4gVGhlIGdyb3VwcyBhcmUgYmFzZWQgb24gdGhl
IGRpZmZlcmVudAorICAgICAgICB0cmFuc2Zvcm1hdGlvbiBydWxlcyBpbiB0aGUgc3BlYy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJRExBdHRyaWJ1dGU6OnNldFBhc3NpbmdQcm9wZXJ0eU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURMQXR0cmlidXRlOjpnZXRQYXNzaW5nUHJvcGVydHlOYW1lKToKKyAgICAgICAgQWRkIG92
ZXJsb2FkcyBvZiBnZXQvc2V0IHRoYXQgcGFzcyB0aGUgcHJvcGVydHkgbmFtZSB0byB0aGUgcHJv
dmlkZWQgZnVuY3Rpb24uIFRoZXNlIGNhbid0CisgICAgICAgIGJlIHNpbXBsZSBvdmVybG9hZHMg
b2YgZ2V0L3NldCBhcyBNU1ZDIGRvZXMgbm90IGFsbG93IG92ZXJsb2FkaW5nIHdpdGggb25seSBh
IG5vbi10eXBlIAorICAgICAgICB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGRpZmZlcmVudGlhdGluZy4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVJbnRlcmZhY2UpOgorICAgICAgICBFYWdlcmx5IGdlbmVyYXRlIHRoZSBhbnkg
c3ludGhldGljIGF0dHJpYnV0ZXMgYmVmb3JlIHRoZSByZXN0IG9mIGNvZGUgZ2VuZXJhdGlvbiwK
KyAgICAgICAgbWF0Y2hpbmcgdGhlIGJlaGF2aW9yIG9mIG90aGVyIHN5bnRoZXRpYyBjb25zdHJ1
Y3Rpb25zIGxpa2UgbWFwL3NldC9zdHJpbmdpZmllcnMuCisKKyAgICAgICAgKEdldEF0dHJpYnV0
ZUdldHRlck5hbWUpOgorICAgICAgICAoR2V0QXR0cmlidXRlU2V0dGVyTmFtZSk6CisgICAgICAg
IEFkZCBzcGVjaWFsIGNhc2VzIHRvIGdldHRlci9zZXR0ZXIgbmFtZSBnZW5lcmF0aW9uIHRvIGZv
cndhcmQgdG8gdGhlIGdlbmVyYXRlZAorICAgICAgICBuYW1lIG9mIHRoZSBzeW50aGV0aWMgYXR0
cmlidXRlIHdoZW4gZGVsZWdhdGluZy4KKworICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgIEV4dHJhY3QgYXR0cmlidXRlIGZ1bmN0aW9uIGZvcndhcmQgZGVjbGFyYXRp
b24gZ2VuYXRpb24gaW50byBhIG5ldyBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckFuZFNldHRlckRl
Y2xhcmF0aW9uCisgICAgICAgIHN1YnJvdXRpbmUgYW5kIHVzZSBpdCBmb3IgZ2VuZXJhdGlvbiBv
ZiBib3RoIG5vcm1hbCBhbmQgc3ludGhldGljIGF0dHJpYnV0ZXMuIEFsc28gYWRkcworICAgICAg
ICBzeW50aGV0aWMgYXR0cmlidXRlcyB0byB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIGdlbmVy
YXRlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyBmb3IuCisKKyAgICAgICAgKEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyQW5kU2V0dGVyRGVjbGFyYXRpb24pOgorICAgICAgICBFeHRyYWN0ZWQgZnJv
bSBHZW5lcmF0ZUltcGxlbWVudGF0aW9uLiBBZGRzIGV4dHJhIGNvbmRpdGlvbiB0byBiYWlsIGlm
IERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUKKyAgICAgICAgaXMgc3BlY2lmaWVk
LgorCisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uKToKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgQ2FsbFdpdGg9UHJvcGVydHlOYW1lIGV4dGVu
ZGVkIGF0dHJpYnV0ZSBieSBhZGRpbmcgYSBQcm9wZXJ0eU5hbWUKKyAgICAgICAgYXJndW1lbnQg
dG8gdGhlIHNpZ25hdHVyZSBvZiBnZXR0ZXIgYm9keSBpZiBpdCBpcyBwcmVzZW50LiBSZW1vdmVz
IG5vdyB1bm5lY2Vzc2FyeSBzdXBwb3J0CisgICAgICAgIGZvciB0aGUgQ1NTUHJvcGVydHkgZXh0
ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlclRyYW1w
b2xpbmVEZWZpbml0aW9uKToKKyAgICAgICAgU3dpdGNoIGZ1bmN0aW9uIG5hbWUgZnJvbSBnZXQg
dG8gZ2V0UGFzc2luZ1Byb3BlcnR5TmFtZSBpZiBDYWxsV2l0aD1Qcm9wZXJ0eU5hbWUgaXMgc3Bl
Y2lmaWVkLgorCisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24pOgor
ICAgICAgICBBZGRzIGV4dHJhIGNvbmRpdGlvbiB0byBiYWlsIGlmIERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLgorCisgICAgICAgIChHZW5lcmF0ZUF0dHJp
YnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBu
ZXcgQ2FsbFdpdGg9UHJvcGVydHlOYW1lIGV4dGVuZGVkIGF0dHJpYnV0ZSBieSBhZGRpbmcgYSBQ
cm9wZXJ0eU5hbWUKKyAgICAgICAgYXJndW1lbnQgdG8gdGhlIHNpZ25hdHVyZSBvZiBnZXR0ZXIg
Ym9keSBpZiBpdCBpcyBwcmVzZW50LiBSZW1vdmVzIG5vdyB1bm5lY2Vzc2FyeSBzdXBwb3J0Cisg
ICAgICAgIGZvciB0aGUgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAgICAg
IChHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlclRyYW1wb2xpbmVEZWZpbml0aW9uKToKKyAgICAgICAg
U3dpdGNoIGZ1bmN0aW9uIG5hbWUgZnJvbSBnZXQgdG8gZ2V0UGFzc2luZ1Byb3BlcnR5TmFtZSBp
ZiBDYWxsV2l0aD1Qcm9wZXJ0eU5hbWUgaXMgc3BlY2lmaWVkLgorCisgICAgICAgIChHZW5lcmF0
ZUF0dHJpYnV0ZVNldHRlckRlZmluaXRpb24pOgorICAgICAgICBBZGRzIGV4dHJhIGNvbmRpdGlv
biB0byBiYWlsIGlmIERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgaXMgc3BlY2lm
aWVkLgorCisgICAgICAgIChHZW5lcmF0ZUNhbGxXaXRoKToKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHRoZSBQcm9wZXJ0eU5hbWUgdmFsdWUgdG8gQ2FsbFdpdGguCisKKyAgICAgICAgKE1ha2VT
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpOgorICAgICAgICBIZWxwZXIgdG8gZ2VuZXJhdGUgdGhl
IHN5bnRoZXRpYyBhdHRyaWJ1dGUgZnJvbSB0aGUgYmFzZSBhdHRyaWJ1dGUgd2l0aCBEZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlCisgICAgICAgIHNwZWNlZmllZC4gTWFpbnRhaW5z
IGFsbCBleGlzdGluZyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIHRoZSBiYXNlIGF0dHJpYnV0ZSBl
eGNlcHQgCisgICAgICAgIERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgaXMgcmVw
bGFjZWQgd2l0aCBJc1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSB0byBhdm9pZCAKKyAgICAgICAg
aW5maW5pdGUgcmVjdXJzaW9uLgorCisgICAgICAgIChBZGRTaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVzSWZOZWVkZWQpOgorICAgICAgICBIZWxwZXIgdG8gZmluZCBhbGwgZGVsZWdhdGluZyBhdHRy
aWJ1dGVzIGFuZCBnZW5lcmF0ZSAvIHN0b3JlIHRoZSBzeW50aGV0aWMgYXR0cmlidXRlcy4KKwor
ICAgICAgICAoR2V0U2hhcmVkU3ludGhldGljQXR0cmlidXRlKToKKyAgICAgICAgSGVscGVyIHRv
IGdldCB0aGUgY29ycmVzcG9uZGluZyBzeW50aGV0aWMgYXR0cmlidXRlIGdpdmVuIGFuIGF0dHJp
YnV0ZSB3aXRoIAorICAgICAgICBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIHNw
ZWNpZmllZCBvbiBpdC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uOgorICAgICAgICBSZW1vdmVzIENTU1Byb3BlcnR5LiBBZGRzIERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUuIEFkZHMgUHJvcGVydHlOYW1lIHZhbHVlIHRvIAorICAgICAg
ICBDYWxsV2l0aCBhbmQgU2V0dGVyQ2FsbFdpdGguCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb29rdXBDU1NQcm9wZXJ0eUZyb21J
RExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJv
cGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlW
YWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JXZWJLaXRDYXNlZElETEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9wZXJ0eVZhbHVl
Rm9yRGFzaGVkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFy
YXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvckVwdWJDYXNlZElE
TEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQ
cm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXROYW1lZEl0ZW0pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAg
ICAgICAgUmVwbGFjZSBuYW1lZC1nZXR0ZXIgYmFzZWQgaW1wbGVtZW50YXRpb24gd2l0aCBoZWxw
ZXJzIGJhc2VkIG9uIHRoZSBkZWZpbml0aW9ucworICAgICAgICBpbiB0aGUgQ1NTT00gc3BlYyAo
cGx1cyBvbmUgc3BlY2lhbCBzZXQgZm9yICdlcHViJyBzcGVjaWFsaXphdGlvbnMgd2UgY3VycmVu
dGx5CisgICAgICAgIG1haW50YWluKS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmlkbDoKKyAgICAgICAgUmVtb3ZlICFFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJ
RVNfRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTiBzZWN0aW9ucyBub3cgdGhhdAorICAgICAgICB3
ZSBjYW4gZnVsbHkgc3VwcG9ydCBFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9S
X0NTU19TVFlMRV9ERUNMQVJBVElPTi4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAg
ICAgICAgUmVtb3ZlICFFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19T
VFlMRV9ERUNMQVJBVElPTiBzZWN0aW9ucyBub3cgdGhhdAorICAgICAgICB3ZSBjYW4gZnVsbHkg
c3VwcG9ydCBFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9E
RUNMQVJBVElPTi4KKyAgICAgICAgUmVwbGFjZXMgQ1NTUHJvcGVydHkgZXh0ZW5kZWQgYXR0cmli
dXRlcyB3aXRoIERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgYW5kIAorICAgICAg
ICBDYWxsV2l0aD1Qcm9wZXJ0eU5hbWUsIHdoaWNoIHRvZ2V0aGVyIGFsbG93IHVzIHRvIGltcGxl
bWVudCBhbGwgdGhlIGF0dHJpYnV0ZXMgd2l0aCBqdXN0CisgICAgICAgIDggaW1wbGVtZW50YXRp
b24gZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdU
ZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q1NTUHJvcGVydHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaDogQWRkZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDU1NQcm9wZXJ0eS5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbDogQWRkZWQuCisgICAgICAgIFJlcGxhY2UgQ1NT
UHJvcGVydHkgdGVzdHMgd2l0aCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIHRl
c3RzIGFuZCB1cGRhdGUgcmVzdWx0cworICAgICAgICBhbGwgYXJvdW5kIGZvciBuZXcgZ2VuZXJh
dGlvbi4KKwogMjAyMS0wNC0xMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFN0b3JlIElucHV0VHlwZSBpbiBhIFJlZiBiZWZvcmUgY2FsbGluZyBzZXRWYWx1ZUFzRGVj
aW1hbApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5o
CShyZXZpc2lvbiAyNzU4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0
dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzPgogY2xhc3MgSURMQXR0cmlidXRlIHsKIHB1YmxpYzoKICAgICB1c2luZyBT
ZXR0ZXIgPSBib29sKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0NsYXNzJiwgSlNDOjpKU1ZhbHVl
KTsKKyAgICB1c2luZyBTZXR0ZXJQYXNzaW5nUHJvcGVydHlOYW1lID0gYm9vbChKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDbGFzcyYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwog
ICAgIHVzaW5nIFN0YXRpY1NldHRlciA9IGJvb2woSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSk7CiAgICAgdXNpbmcgR2V0dGVyID0gSlNDOjpKU1ZhbHVlKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU0NsYXNzJik7CisgICAgdXNpbmcgR2V0dGVyUGFzc2luZ1Byb3BlcnR5TmFtZSA9
IEpTQzo6SlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDbGFzcyYsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKICAgICB1c2luZyBTdGF0aWNHZXR0ZXIgPSBKU0M6OkpTVmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCYpOwogICAgIAogICAgIHN0YXRpYyBKU0NsYXNzKiBjYXN0KEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKQEAgLTUzLDcgKzU1LDI0IEBAIHB1Ymxp
YzoKIAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHNldHRlcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgSlNDOjpKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSkpKTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogRklYTUU6IFRoaXMgY2Fu
IGJlIG1lcmdlZCB3aXRoIGBzZXRgIGlmIHdlIHJlcGxhY2UgdGhlIGV4cGxpY2l0IHNldHRlciBm
dW5jdGlvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd2l0aCBhIGdlbmVyaWMgbGFtYmRhLgorICAgIHRl
bXBsYXRlPFNldHRlclBhc3NpbmdQcm9wZXJ0eU5hbWUgc2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KKyAg
ICBzdGF0aWMgYm9vbCBzZXRQYXNzaW5nUHJvcGVydHlOYW1lKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworCisgICAgICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgICAg
IGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
c2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93KQorICAgICAgICAg
ICAgICAgIHJldHVybiBKU0M6OnRocm93Vk1ET01BdHRyaWJ1dGVTZXR0ZXJUeXBlRXJyb3IoJmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpTQ2xhc3M6OmluZm8oKSwgYXR0cmlidXRl
TmFtZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChzZXR0
ZXIobGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QsIEpTQzo6SlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSksIGF0dHJpYnV0ZU5hbWUpKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8
U3RhdGljU2V0dGVyIHNldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cg
PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CiAgICAgc3RhdGljIGJvb2wgc2V0U3Rh
dGljKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSkKICAgICB7CkBAIC04Myw3ICsxMDIsMzIgQEAgcHVibGljOgogICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChKU0M6OkpTVmFsdWU6OmVuY29kZShnZXR0ZXIo
bGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QpKSkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIAorCisgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIG1lcmdlZCB3aXRoIGBnZXRgIGlmIHdl
IHJlcGxhY2UgdGhlIGV4cGxpY2l0IHNldHRlciBmdW5jdGlvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIg
d2l0aCBhIGdlbmVyaWMgbGFtYmRhLgorICAgIHRlbXBsYXRlPEdldHRlclBhc3NpbmdQcm9wZXJ0
eU5hbWUgZ2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBnZXRQYXNzaW5nUHJvcGVydHlOYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisKKyAgICAg
ICAgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0KSB7CisgICAgICAgICAgICBBU1NFUlQoY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUpKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxK
U0NsYXNzKj4oSlNDOjpKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRl
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdCwgYXR0cmlidXRlTmFtZSkpKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqZWN0KSkgeworICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cg
PT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNDOjp0aHJvd1ZNRE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCksIGF0dHJpYnV0ZU5hbWUpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRU
aGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZSkKKyAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHJlamVjdFByb21pc2VXaXRoR2V0dGVyVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ2xhc3M6OmluZm8oKSwgYXR0cmlidXRlTmFtZSkp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQzo6
SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAoSlNDOjpKU1ZhbHVlOjpl
bmNvZGUoZ2V0dGVyKGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0LCBhdHRyaWJ1dGVO
YW1lKSkpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHRlbXBsYXRlPFN0YXRpY0dldHRlciBn
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIGdldFN0
YXRpYyhKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
Mjc1ODA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsNyBAQCBzdWIgR2VuZXJhdGVJbnRl
cmZhY2UKICAgICBBZGRNYXBMaWtlQXR0cmlidXRlc0FuZE9wZXJhdGlvbklmTmVlZGVkKCRpbnRl
cmZhY2UpOwogICAgIEFkZFNldExpa2VBdHRyaWJ1dGVzQW5kT3BlcmF0aW9uSWZOZWVkZWQoJGlu
dGVyZmFjZSk7CiAgICAgQWRkU3RyaW5naWZpZXJPcGVyYXRpb25JZk5lZWRlZCgkaW50ZXJmYWNl
KTsKKyAgICBBZGRTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzSWZOZWVkZWQoJGludGVyZmFjZSk7
CiAKICAgICBpZiAoJGludGVyZmFjZS0+aXNDYWxsYmFjaykgewogICAgICAgICAkb2JqZWN0LT5H
ZW5lcmF0ZUNhbGxiYWNrSW50ZXJmYWNlSGVhZGVyKCRpbnRlcmZhY2UsICRlbnVtZXJhdGlvbnMs
ICRkaWN0aW9uYXJpZXMpOwpAQCAtMTg0MCw2ICsxODQxLDcgQEAgc3ViIEdldEF0dHJpYnV0ZUdl
dHRlck5hbWUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkg
PSBAXzsKIAorICAgIHJldHVybiBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsIEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmli
dXRlKSkgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZX07CiAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFt
ZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKTsKICAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFt
ZSkgLiAiQ29uc3RydWN0b3IiIC4gTWFuZ2xlQXR0cmlidXRlT3JGdW5jdGlvbk5hbWUoJGF0dHJp
YnV0ZS0+bmFtZSkgaWYgJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJuICRjb2RlR2Vu
ZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gTWFuZ2xlQXR0cmlidXRlT3JGdW5jdGlv
bk5hbWUoJGF0dHJpYnV0ZS0+bmFtZSkgLiAiQ29uc3RydWN0b3IiIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKQEAgLTE4NTAsNiArMTg1Miw3
IEBAIHN1YiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87CiAKKyAgICByZXR1cm4gR2V0QXR0cmlidXRlU2V0
dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCBHZXRTaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OwogICAgIHJldHVybiAi
c2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFt
ZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0
dHJpYnV0ZSk7CiAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gTWFuZ2xlQXR0cmlidXRlT3JGdW5jdGlvbk5h
bWUoJGF0dHJpYnV0ZS0+bmFtZSkgaWYgJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJu
ICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNsYXNzTmFtZSkgLiBNYW5nbGVB
dHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKTsKQEAgLTQyODAsMjQgKzQy
ODMsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUigke2NvbnN0cnVjdG9y
R2V0dGVyfSk7XG4iKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCBpZiBJc0pT
QnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLQotICAgICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkg
JGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKCR7Z2V0dGVyfSk7XG4iKTsKLSAgICAgICAgICAgIHVubGVz
cyAoSXNSZWFkb25seSgkYXR0cmlidXRlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3Rv
clR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkcmVhZFdyaXRl
Q29uZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25h
bGx5UmVhZFdyaXRlfTsKLSAgICAgICAgICAgICAgICBpZiAoJHJlYWRXcml0ZUNvbmRpdGlvbmFs
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZyA9
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZh
bHVlKCRyZWFkV3JpdGVDb25kaXRpb25hbCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiI2lmICR7cmVhZFdyaXRlQ29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNl
dHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
Uigke3NldHRlcn0pO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
ZW5kaWZcbiIpIGlmICRyZWFkV3JpdGVDb25kaXRpb25hbDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CisgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntTeW50aGV0aWNJRExBdHRyaWJ1dGVzfX0sIEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30pIHsKKyAgICAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0dGVy
RGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CkBA
IC00ODc2LDcgKzQ4NjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCi0gICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0
dHJpYnV0ZXN9fSwgQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBHZW5lcmF0
ZUF0dHJpYnV0ZUdldHRlckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyRGVm
aW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KTsKICAgICB9CkBAIC01MjAwLDYgKzUxODcsMzAgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwogfQogCitzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJBbmRTZXR0ZXJEZWNsYXJh
dGlvbgoreworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpID0gQF87CisKKyAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OworCisgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGF0dHJpYnV0ZSk7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgbXkgJGdldHRlciA9IEdldEF0
dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Cisg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIo
JHtnZXR0ZXJ9KTtcbiIpOworICAgIHVubGVzcyAoSXNSZWFkb25seSgkYXR0cmlidXRlKSB8fCAk
Y29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKKyAg
ICAgICAgbXkgJHJlYWRXcml0ZUNvbmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q29uZGl0aW9uYWxseVJlYWRXcml0ZX07CisgICAgICAgIGlmICgkcmVhZFdyaXRl
Q29uZGl0aW9uYWwpIHsKKyAgICAgICAgICAgIG15ICRyZWFkV3JpdGVDb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0
ZVZhbHVlKCRyZWFkV3JpdGVDb25kaXRpb25hbCk7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIjaWYgJHtyZWFkV3JpdGVDb25kaXRpb25hbFN0cmluZ31cbiIpOworICAgICAgICB9
CisgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUigke3NldHRlcn0pO1xuIik7CisgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuIikgaWYgJHJlYWRXcml0ZUNvbmRpdGlvbmFs
OworICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKK30KKwogc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRp
b24KIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlLCAkYXR0cmlidXRlR2V0dGVyQm9keU5hbWUsICRjb25kaXRpb25hbCkgPSBAXzsKQEAg
LTUyMDcsNyArNTIxOCw4IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0
aW8KICAgICBteSBAc2lnbmF0dXJlQXJndW1lbnRzID0gKCk7CiAgICAgcHVzaChAc2lnbmF0dXJl
QXJndW1lbnRzLCAiSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QiKTsKICAgICBw
dXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICIke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QiKSBpZiAh
JGF0dHJpYnV0ZS0+aXNTdGF0aWM7Ci0gICAgCisgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRz
LCAiUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSIpIGlmICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRl
ZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxX
aXRofSwgIlByb3BlcnR5TmFtZSIpOworCiAgICAgbXkgJG5lZWRTZWN1cml0eUNoZWNrID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyfTsKICAg
ICBteSAkaGFzQ3VzdG9tR2V0dGVyID0gSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUpOwogICAg
IG15ICRpc0V2ZW50SGFuZGxlciA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWUgZXEgIkV2ZW50SGFu
ZGxlciI7CkBAIC01MjY5LDEzICs1MjgxLDYgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVy
Qm9keURlZmluaXRpbwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6JHtjb25zdHJ1
Y3RvckdldHRlcn0oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgIH0KLSAgICB9IGVsc2lmICgkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX0pIHsKLSAgICAgICAgJGltcGxJbmNs
dWRlc3siQ1NTUHJvcGVydHlOYW1lcy5oIn0gPSAxOwotICAgICAgICBteSAkcHJvcGVydHlJRCA9
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NTU1Byb3BlcnR5fTsKLQotICAgICAg
ICBteSAkdG9KU0V4cHJlc3Npb24gPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0
dHJpYnV0ZSwgJGludGVyZmFjZSwgImltcGwuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1By
b3BlcnR5JHtwcm9wZXJ0eUlEfSkiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkiKTsKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICgke3RvSlNFeHByZXNzaW9ufSkpO1xuIik7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hl
ZEF0dHJpYnV0ZX0pIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
SlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IHRoaXNPYmplY3QubV8iIC4gJGF0dHJpYnV0ZS0+bmFtZSAu
ICIuZ2V0KCkpXG4iKTsKQEAgLTUzMjQsNyArNTMyOSw4IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0
ZUdldHRlclRyYW1wb2xpbmVEZWYKICAgICAKICAgICBteSAkY2FsbEF0dHJpYnV0ZUdldHRlck5h
bWUgPSAiZ2V0IjsKICAgICAkY2FsbEF0dHJpYnV0ZUdldHRlck5hbWUgLj0gIlN0YXRpYyIgaWYg
JGF0dHJpYnV0ZS0+aXNTdGF0aWM7Ci0gICAgCisgICAgJGNhbGxBdHRyaWJ1dGVHZXR0ZXJOYW1l
IC49ICJQYXNzaW5nUHJvcGVydHlOYW1lIiBpZiAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRy
aWJ1dGVDb250YWlucygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0s
ICJQcm9wZXJ0eU5hbWUiKTsKKwogICAgIG15IEB0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAoKTsKICAg
ICBwdXNoKEB0ZW1wbGF0ZVBhcmFtZXRlcnMsICRhdHRyaWJ1dGVHZXR0ZXJCb2R5TmFtZSk7CiAg
ICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUxlbmllbnRUaGlz
fSkgewpAQCAtNTM0Niw2ICs1MzUyLDcgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyRGVm
aW5pdGlvbgogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpID0gQF87CiAKICAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OwogCiAgICAgbXkgJGF0dHJp
YnV0ZUdldHRlck5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFz
c05hbWUsICRhdHRyaWJ1dGUpOwogICAgIG15ICRhdHRyaWJ1dGVHZXR0ZXJCb2R5TmFtZSA9ICRh
dHRyaWJ1dGVHZXR0ZXJOYW1lIC4gIkdldHRlciI7CkBAIC01MzcwLDYgKzUzNzcsNyBAQCBzdWIg
R2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgcHVzaChAc2lnbmF0dXJl
QXJndW1lbnRzLCAiSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QiKTsKICAgICBw
dXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICIke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QiKSBpZiAh
JGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiSlNW
YWx1ZSB2YWx1ZSIpOworICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIlByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUiKSBpZiAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250
YWlucygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sICJQcm9wZXJ0
eU5hbWUiKTsKIAogICAgIG15ICRuZWVkU2VjdXJpdHlDaGVjayA9ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcn07CiAgICAgbXkgJGhhc0N1c3Rv
bVNldHRlciA9IEhhc0N1c3RvbVNldHRlcigkYXR0cmlidXRlKTsKQEAgLTU0MTksMjEgKzU0Mjcs
NiBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB2bS5oZWFwLndyaXRlQmFycmllcigmdGhpc09iamVjdCwg
dmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBlbnN1cmVTdGls
bEFsaXZlSGVyZSh2YWx1ZSk7XG5cbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuIHRydWU7XG4iKTsKLSAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDU1NQcm9wZXJ0eX0pIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siQ1NTUHJv
cGVydHlOYW1lcy5oIn0gPSAxOwotCi0gICAgICAgIG15ICRwcm9wZXJ0eUlEID0gJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q1NTUHJvcGVydHl9OwotCi0gICAgICAgIG15ICRleGNl
cHRpb25UaHJvd2VyID0gR2V0QXR0cmlidXRlRXhjZXB0aW9uVGhyb3dlcigkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKTsKLSAgICAgICAgbXkgJHRvTmF0aXZlRXhwcmVzc2lvbiA9IEpTVmFsdWVUb05h
dGl2ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0sICImbGV4aWNhbEdsb2JhbE9iamVjdCIsICJsZXhp
Y2FsR2xvYmFsT2JqZWN0IiwgInRoaXNPYmplY3QiLCAiKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCkiLCAkZXhjZXB0aW9uVGhyb3dlcik7Ci0KLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTtcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBuYXRpdmVWYWx1ZSA9ICR7dG9OYXRpdmVFeHByZXNz
aW9ufTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGludm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7XG4iKTsKLSAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gaW1wbC5zZXRQcm9wZXJ0eUludGVybmFsKENT
U1Byb3BlcnR5JHtwcm9wZXJ0eUlEfSwgV1RGTW92ZShuYXRpdmVWYWx1ZSksIGZhbHNlKTtcbiIp
OwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfSk7XG4iKTsKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgfSBlbHNpZiAoJGlz
UmVwbGFjZWFibGUpIHsKICAgICAgICAgbXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3Bl
cnR5LlxuIik7CkBAIC01NTIxLDcgKzU1MTQsOCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0
ZXJUcmFtcG9saW5lRGVmCiAgICAgCiAgICAgbXkgJGNhbGxBdHRyaWJ1dGVTZXR0ZXJOYW1lID0g
InNldCI7CiAgICAgJGNhbGxBdHRyaWJ1dGVTZXR0ZXJOYW1lIC49ICJTdGF0aWMiIGlmICRhdHRy
aWJ1dGUtPmlzU3RhdGljOwotICAgIAorICAgICRjYWxsQXR0cmlidXRlU2V0dGVyTmFtZSAuPSAi
UGFzc2luZ1Byb3BlcnR5TmFtZSIgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRl
Q29udGFpbnMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAiUHJv
cGVydHlOYW1lIik7CisKICAgICBteSBAdGVtcGxhdGVQYXJhbWV0ZXJzID0gKCk7CiAgICAgcHVz
aChAdGVtcGxhdGVQYXJhbWV0ZXJzLCAkYXR0cmlidXRlU2V0dGVyQm9keU5hbWUpOwogICAgIHB1
c2goQHRlbXBsYXRlUGFyYW1ldGVycywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1cm5F
YXJseSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUxlbmllbnRU
aGlzfTsKQEAgLTU1MzksNyArNTUzMyw4IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckRl
ZmluaXRpb24KICAgICByZXR1cm4gaWYgSXNSZWFkb25seSgkYXR0cmlidXRlKTsKICAgICByZXR1
cm4gaWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUp
OwogICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAg
ICAKKyAgICByZXR1cm4gaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX07CisKICAgICBteSAkY29uZGl0aW9uYWwgPSAk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgaWYgKCRj
b25kaXRpb25hbCkgewogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVy
YXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRyaWJ1dGVWYWx1ZSgkY29uZGl0
aW9uYWwpOwpAQCAtNjAwMyw2ICs1OTk4LDEwIEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwg
IldvcmxkIikpIHsKICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAid29ybGRGb3JET01PYmpl
Y3QoJHt0aGlzUmVmZXJlbmNlfSkiKTsKICAgICB9CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5F
eHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIlByb3BlcnR5TmFtZSIpKSB7Cisg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiKTsKKyAgICAg
ICAgcHVzaChAY2FsbFdpdGhBcmdzLCAicHJvcGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5
TmFtZSkiKTsKKyAgICB9CiAKICAgICByZXR1cm4gQGNhbGxXaXRoQXJnczsKIH0KQEAgLTgwNDUs
NCArODA0NCw1NiBAQCBzdWIgR2VuZXJhdGVDdXN0b21FbGVtZW50UmVhY3Rpb25zU3RhY2tJCiAg
ICAgfQogfQogCitzdWIgTWFrZVNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICgk
bmFtZSwgJGJhc2VBdHRyaWJ1dGUpID0gQF87CisKKyAgICBteSAkc2hhcmVkQXR0cmlidXRlID0g
SURMQXR0cmlidXRlLT5uZXcoKTsKKyAgICAkc2hhcmVkQXR0cmlidXRlLT5uYW1lKCRuYW1lKTsK
KyAgICAkc2hhcmVkQXR0cmlidXRlLT50eXBlKElETFBhcnNlcjo6Y2xvbmVUeXBlKCRiYXNlQXR0
cmlidXRlLT50eXBlKSk7CisgICAgSURMUGFyc2VyOjpjb3B5RXh0ZW5kZWRBdHRyaWJ1dGVzKCRz
aGFyZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcywgJGJhc2VBdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcyk7CisKKyAgICAjIFJlcGxhY2UgIkRlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGUiIGV4dGVuZGVkIGF0dHJpYnV0ZSB3aXRoICJJc1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSIgZXh0ZW5kZWQgYXR0cmlidXRlIHRvCisgICAgIyB0aGF0IHRoaXMgaXMgdGhlIHJl
YWwgc3ludGhlc2l6ZWQgYXR0cmlidXRlLgorICAgIGRlbGV0ZSAkc2hhcmVkQXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlfTsK
KyAgICAkc2hhcmVkQXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZX0gPSAxOworCisgICAgcmV0dXJuICRzaGFyZWRBdHRyaWJ1dGU7Cit9CisK
K3N1YiBBZGRTaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVzSWZOZWVkZWQKK3sKKyAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7CisKKyAgICAjIFVzZSBhIGZha2UgZXh0ZW5kZWQgYXR0cmlidXRlLCBT
eW50aGV0aWNJRExBdHRyaWJ1dGVzLCB0byBzdG9yZSB0aGUgbmV3IGF0dHJpYnV0ZXMKKyAgICBp
ZiAobm90IGV4aXN0cyAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTeW50aGV0aWNJ
RExBdHRyaWJ1dGVzfSkgeworICAgICAgICBteSAlc3ludGhldGljSURMQXR0cmlidXRlcyA9ICgg
KTsKKyAgICAgICAgbXkgQGF0dHJpYnV0ZXMgPSAoKTsKKyAgICAgICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZX0pIHsKKyAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGV9OworICAg
ICAgICAgICAgICAgIGlmIChub3QgJHN5bnRoZXRpY0lETEF0dHJpYnV0ZXN7JG5hbWV9KSB7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICRzeW50aGV0aWNBdHRyaWJ1dGUgPSBNYWtlU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlKCRuYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICAgICAg
JHN5bnRoZXRpY0lETEF0dHJpYnV0ZXN7JG5hbWV9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAYXR0cmlidXRlcywgJHN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0dHJpYnV0ZXN9ID0gXEBhdHRyaWJ1dGVzOworICAg
IH0KK30KKworc3ViIEdldFNoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZQoreworICAgIG15ICgkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgZm9yZWFjaCBteSAkc3ludGhldGljQXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1N5bnRoZXRpY0lETEF0
dHJpYnV0ZXN9fSkgeworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZX0gZXEgJHN5bnRoZXRpY0F0dHJp
YnV0ZS0+bmFtZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gJHN5bnRoZXRpY0F0dHJpYnV0ZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdW5kZWY7Cit9CisKIDE7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbgkocmV2aXNpb24gMjc1ODA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCw2IEBACiAg
ICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9jdXN0b20tZWxlbWVudHMuaHRtbCNjZXJlYWN0aW9ucyIKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSwKLSAgICAgICAgIkNTU1Byb3BlcnR5IjogewotICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCi0gICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KLSAg
ICAgICAgfSwKICAgICAgICAgIkNhY2hlZEF0dHJpYnV0ZSI6IHsKICAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCiAgICAgICAgIH0sCkBAIC01Nyw3ICs1Myw3IEBA
CiAgICAgICAgIH0sCiAgICAgICAgICJDYWxsV2l0aCI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXSwKLSAgICAgICAgICAgICJ2YWx1
ZXMiOiBbIkRvY3VtZW50IiwgIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Iiwg
Ikdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ciLCAiUmVzcG9uc2li
bGVEb2N1bWVudCIsICJXb3JsZCJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQi
LCAiRXhlY1N0YXRlIiwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiLCAiR2xvYmFsT2JqZWN0Iiwg
IkFjdGl2ZVdpbmRvdyIsICJGaXJzdFdpbmRvdyIsICJSZXNwb25zaWJsZURvY3VtZW50IiwgIldv
cmxkIiwgIlByb3BlcnR5TmFtZSJdLAogICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24i
OiB0cnVlCiAgICAgICAgIH0sCiAgICAgICAgICJDaGVja1NlY3VyaXR5IjogewpAQCAtMTU0LDYg
KzE1MCw5IEBACiAgICAgICAgICJEZWZhdWx0RGVmaW5lT3duUHJvcGVydHkiOiB7CiAgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAorICAgICAg
ICAiRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSI6IHsKKyAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSJdCisgICAgICAgIH0sCiAgICAgICAgICJEaXNh
YmxlZEJ5UXVpcmsiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZh
Y2UiLCAiZGljdGlvbmFyeSIsICJlbnVtIiwgImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iLCAiY29u
c3RhbnQiLCAiZGljdGlvbmFyeS1tZW1iZXIiLCAiaW5jbHVkZXMiXSwKICAgICAgICAgICAgICJ2
YWx1ZXMiOiBbIioiXSwKQEAgLTQ3NSw3ICs0NzQsNyBAQAogICAgICAgICB9LAogICAgICAgICAi
U2V0dGVyQ2FsbFdpdGgiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRy
aWJ1dGUiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0IiwgIkdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5k
b3ciXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkV4ZWNTdGF0ZSIsICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0IiwgIkdsb2JhbE9iamVjdCIsICJBY3RpdmVXaW5kb3ciLCAiRmlyc3RXaW5kb3ci
LCAiUHJvcGVydHlOYW1lIl0sCiAgICAgICAgICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRy
dWUKICAgICAgICAgfSwKICAgICAgICAgIlNldHRpbmdzQ29uZGl0aW9uYWxseVJlYWRXcml0ZSI6
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVz
dEdsb2JhbENvbnN0cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2
aXNpb24gMjc1ODA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0Jp
bmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDYgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0
ZSBUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciBUZXN0Q0VSZWFjdGlvbnM7CiAgICAgYXR0cmli
dXRlIFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IgVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXI7Ci0gICAgYXR0cmlidXRlIFRlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yIFRl
c3RDU1NQcm9wZXJ0eTsKICAgICBhdHRyaWJ1dGUgVGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvciBU
ZXN0Q2FsbFRyYWNlcjsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9DT05ESVRJT05BTF0gYXR0cmli
dXRlIFRlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yIFRlc3RDYWxsYmFja0ludGVyZmFj
ZTsKICAgICBhdHRyaWJ1dGUgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IgVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOwpAQCAtOSw2ICs4LDcgQEAg
cGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3RE
ZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZTsKICAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRUb0pTT05J
bmhlcml0Q29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0OwogICAgIGF0dHJpYnV0
ZSBUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbENvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsOworICAgIGF0dHJpYnV0ZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yIFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOwogICAgIGF0dHJpYnV0ZSBUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciBUZXN0
RG9tYWluU2VjdXJpdHk7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IgVGVzdEV2ZW50Q29uc3RydWN0b3I7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudFRhcmdl
dENvbnN0cnVjdG9yIFRlc3RFdmVudFRhcmdldDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNzU4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsOSArMjQsNiBAQCBXZWJET01UZXN0Q0VSZWFjdGlvbnMuaDogCiBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyLmg6IAogRE9NVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDog
CiBXZWJET01UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKLUpTVGVzdENTU1Byb3BlcnR5
Lmg6IAotRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAotV2ViRE9NVGVzdENTU1Byb3BlcnR5Lmg6IAog
SlNUZXN0Q2FsbFRyYWNlci5oOiAKIERPTVRlc3RDYWxsVHJhY2VyLmg6IAogV2ViRE9NVGVzdENh
bGxUcmFjZXIuaDogCkBAIC03Niw2ICs3Myw5IEBAIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdC5oOiAKIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuaDogCiBET01UZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5oOiAKIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5oZXJp
dEZpbmFsLmg6IAorSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oOiAK
K0RPTVRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmg6IAorV2ViRE9NVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaDogCiBKU1Rlc3REZXJpdmVkRGlj
dGlvbmFyeS5oOiAKIERPTVRlc3REZXJpdmVkRGljdGlvbmFyeS5oOiAKIFdlYkRPTVRlc3REZXJp
dmVkRGljdGlvbmFyeS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q1NTUHJvcGVydHkuaWRsCShyZXZpc2lvbiAyNzU4MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENTU1Byb3BlcnR5
LmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi10eXBlZGVm
IFVTVlN0cmluZyBDU1NPTVN0cmluZzsKLQotWwotICAgIEV4cG9zZWQ9VGVzdEdsb2JhbE9iamVj
dAotXSBpbnRlcmZhY2UgVGVzdENTU1Byb3BlcnR5IHsKLSAgICBbQ0VSZWFjdGlvbnMsIENTU1By
b3BlcnR5PVByb3BlcnR5TmFtZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10g
Q1NTT01TdHJpbmcgcHJvcGVydHk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaWRsCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK3R5cGVkZWYgVVNWU3RyaW5nIENTU09NU3RyaW5nOworCitbCisgICAgRXhwb3Nl
ZD1UZXN0R2xvYmFsT2JqZWN0CitdIGludGVyZmFjZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSB7CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlPXNoYXJlZEF0dHJpYnV0ZTEsIENhbGxXaXRoPVByb3BlcnR5TmFtZV0gYXR0
cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVydHkxOwor
ICAgIFtDRVJlYWN0aW9ucywgRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT1zaGFy
ZWRBdHRyaWJ1dGUxLCBDYWxsV2l0aD1Qcm9wZXJ0eU5hbWVdIGF0dHJpYnV0ZSBbTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIHByb3BlcnR5MjsKKyAgICBbQ0VSZWFjdGlvbnMs
IERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9c2hhcmVkQXR0cmlidXRlMSwgQ2Fs
bFdpdGg9UHJvcGVydHlOYW1lXSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBD
U1NPTVN0cmluZyBwcm9wZXJ0eTM7CisgICAgW0NFUmVhY3Rpb25zLCBEZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlPXNoYXJlZEF0dHJpYnV0ZTIsIENhbGxXaXRoPVByb3BlcnR5TmFt
ZV0gYXR0cmlidXRlIFtMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ10gQ1NTT01TdHJpbmcgcHJvcGVy
dHk0OworICAgIFtDRVJlYWN0aW9ucywgRGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZT1zaGFyZWRBdHRyaWJ1dGUyLCBDYWxsV2l0aD1Qcm9wZXJ0eU5hbWVdIGF0dHJpYnV0ZSBbTGVn
YWN5TnVsbFRvRW1wdHlTdHJpbmddIENTU09NU3RyaW5nIHByb3BlcnR5NTsKK307CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q1NTUHJvcGVydHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDI3NTgwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyOTggKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNUZXN0Q1NTUHJvcGVydHkuaCIKLQotI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNp
bmNsdWRlICJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIgotI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgotI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
LSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRp
b25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNp
dG9yTWFjcm9zLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEF0dHJpYnV0ZXMKLQotc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3Rvcik7Ci1zdGF0aWMgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eSk7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0
eSk7Ci0KLWNsYXNzIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpT
Qzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNO
b25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdENTU1Byb3BlcnR5UHJv
dG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENTU1By
b3BlcnR5UHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0g
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdENTU1Byb3Bl
cnR5UHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rl
c3RDU1NQcm9wZXJ0eVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYpOwotfTsKLVNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpT
VGVzdENTU1Byb3BlcnR5UHJvdG90eXBlLCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZTo6QmFz
ZSk7Ci0KLXVzaW5nIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RDU1NQcm9wZXJ0eT47Ci0KLXRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RDU1NQcm9wZXJ0eURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eURP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdENTU1Byb3BlcnR5Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3RDU1NQcm9wZXJ0eSJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19
Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdENTU1Byb3BlcnR5RE9NQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RDU1NQcm9wZXJ0eSIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q1NTUHJvcGVydHlET01Db25z
dHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDU1NQcm9wZXJ0eUNv
bnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oMCkgfSB9LAotICAgIHsgInByb3BlcnR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0
eSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5KSB9IH0sCi19OwotCi1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RDU1NQcm9wZXJ0
eSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0Q1NTUHJvcGVydHlQcm90b3R5cGUpIH07Ci0KLXZvaWQgSlNUZXN0Q1NTUHJvcGVydHlQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RDU1NQcm9wZXJ0
eTo6aW5mbygpLCBKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
Ci0gICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Ci19Ci0KLWNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RDU1NQcm9wZXJ0eTo6c19pbmZvID0geyAiVGVzdENTU1Byb3BlcnR5
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RDU1NQcm9wZXJ0eSkgfTsKLQotSlNUZXN0Q1NTUHJvcGVydHk6OkpTVGVzdENTU1Byb3Bl
cnR5KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdENTU1Byb3BlcnR5PiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdENT
U1Byb3BlcnR5PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0K
LQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOwotCi0gICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVj
dCwgVGVzdENTU1Byb3BlcnR5Pjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBb
QWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFz
c2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQotfQotCi1KU09iamVjdCogSlNUZXN0Q1NTUHJvcGVy
dHk6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpjcmVhdGUodm0s
ICZnbG9iYWxPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwot
fQotCi1KU09iamVjdCogSlNUZXN0Q1NTUHJvcGVydHk6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlw
ZTxKU1Rlc3RDU1NQcm9wZXJ0eT4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUgSlNU
ZXN0Q1NTUHJvcGVydHk6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0
Q1NTUHJvcGVydHlET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eTo6ZGVz
dHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3RDU1NQcm9wZXJ0eSogdGhpc09i
amVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdENTU1Byb3BlcnR5Kj4oY2VsbCk7Ci0gICAgdGhpc09i
amVjdC0+SlNUZXN0Q1NTUHJvcGVydHk6On5KU1Rlc3RDU1NQcm9wZXJ0eSgpOwotfQotCi10ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RDU1NQcm9wZXJ0eSogSURMQXR0cmlidXRlPEpTVGVzdENTU1By
b3BlcnR5Pjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQotewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENT
U1Byb3BlcnR5Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdENT
U1Byb3BlcnR5Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQotewotICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDU1NQcm9wZXJ0eVByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENTU1Byb3BlcnR5OjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9w
ZXJ0eUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0Q1NT
UHJvcGVydHkmIHRoaXNPYmplY3QpCi17Ci0gICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExlZ2FjeU51bGxUb0VtcHR5U3Ry
aW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBpbXBsLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eVByb3BlcnR5TmFtZSkp
KSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RDU1NQcm9wZXJ0eV9wcm9w
ZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKLXsKLSAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdENTU1Byb3BlcnR5Pjo6Z2V0PGpzVGVzdENTU1Byb3BlcnR5X3By
b3BlcnR5R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdENTU1Byb3BlcnR5X3Byb3BlcnR5U2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RDU1NQcm9wZXJ0eSYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNr
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExMZWdhY3lOdWxsVG9FbXB0
eVN0cmluZ0FkYXB0b3I8SURMVVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGludm9r
ZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldFByb3BlcnR5SW50
ZXJuYWwoQ1NTUHJvcGVydHlQcm9wZXJ0eU5hbWUsIFdURk1vdmUobmF0aXZlVmFsdWUpLCBmYWxz
ZSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX1NF
VFRFUihzZXRKU1Rlc3RDU1NQcm9wZXJ0eV9wcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQotewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0Q1NTUHJvcGVydHk+OjpzZXQ8c2V0SlNUZXN0Q1NTUHJvcGVy
dHlfcHJvcGVydHlTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdENT
U1Byb3BlcnR5OjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYgY2xp
ZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwot
ICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8q
IHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkuZ2V0KCkpCi0gICAg
ICAgIHJldHVybiBzcGFjZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpT
Qzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdENTU1Byb3BlcnR5PiB8fCAhSlNUZXN0Q1NT
UHJvcGVydHk6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19i
YXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0Q1NTUHJvcGVydHk+KQot
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eSA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0Q1NTUHJvcGVydHkpOwotICAgIGVsc2UKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0Q1NTUHJvcGVydHkgPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RDU1NQcm9wZXJ0eSk7Ci0gICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RDU1NQcm9wZXJ0eS5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigi
dW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1j
b21wYXJlIikKLSAgICB2b2lkICgqbXlWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxs
KiwgSlNDOjpTbG90VmlzaXRvciYpID0gSlNUZXN0Q1NTUHJvcGVydHk6OnZpc2l0T3V0cHV0Q29u
c3RyYWludHM7Ci0gICAgdm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpK
U0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25z
dHJhaW50czsKLSAgICBpZiAobXlWaXNpdE91dHB1dENvbnN0cmFpbnQgIT0ganNDZWxsVmlzaXRP
dXRwdXRDb25zdHJhaW50KQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFj
ZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdT
X0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3RDU1NQcm9wZXJ0eTo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihjZWxsKTsKLSAgICBh
bmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBl
ZCgpKTsKLSAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAg
ICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgQmFzZTo6YW5h
bHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwotfQotCi1ib29sIEpTVGVzdENTU1Byb3BlcnR5T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgQWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioq
IHJlYXNvbikKLXsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURfUEFSQU0o
dmlzaXRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEpTVGVzdENTU1Byb3BlcnR5T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIGF1dG8qIGpzVGVzdENT
U1Byb3BlcnR5ID0gc3RhdGljX2Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldv
cmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDU1NQcm9w
ZXJ0eS0+d3JhcHBlZCgpLCBqc1Rlc3RDU1NQcm9wZXJ0eSk7Ci19Ci0KLSNpZiBFTkFCTEUoQklO
RElOR19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE1VGVzdENTU1Byb3BlcnR5RVtdOyB9
Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RD
U1NQcm9wZXJ0eT4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQot
ICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGlt
cGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0Q1NTUHJvcGVydHlAV2ViQ29yZUBANkJAIik7
Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3Jl
MTVUZXN0Q1NTUHJvcGVydHlFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRl
c3RDU1NQcm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQg
dGhlCi0gICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGlu
dGVyZmFjZSBkZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGlj
PFRlc3RDU1NQcm9wZXJ0eT46OnZhbHVlLCAiVGVzdENTU1Byb3BlcnR5IGlzIG5vdCBwb2x5bW9y
cGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhh
dmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gVGVzdENTU1Byb3BlcnR5IGhhcyBz
dWJjbGFzc2VzLiBJZiBUZXN0Q1NTUHJvcGVydHkgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFz
c2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RDU1NQcm9wZXJ0
eSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0
aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRl
ZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVj
dGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0
Q1NTUHJvcGVydHk+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDU1NQcm9wZXJ0eSYgaW1wbCkKLXsKLSAg
ICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwot
fQotCi1UZXN0Q1NTUHJvcGVydHkqIEpTVGVzdENTU1Byb3BlcnR5Ojp0b1dyYXBwZWQoSlNDOjpW
TSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0Q1NTUHJvcGVydHkqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENTU1Byb3Bl
cnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENTU1Byb3BlcnR5LmgJKHJldmlzaW9uIDI3NTgwNykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDU1NQcm9wZXJ0eS5oCShub25leGlz
dGVudCkKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIlRlc3RDU1NQcm9w
ZXJ0eS5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEpTVGVzdENTU1Byb3BlcnR5IDogcHVibGljIEpTRE9NV3JhcHBlcjxU
ZXN0Q1NTUHJvcGVydHk+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVy
PFRlc3RDU1NQcm9wZXJ0eT47Ci0gICAgc3RhdGljIEpTVGVzdENTU1Byb3BlcnR5KiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNUZXN0Q1NT
UHJvcGVydHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q1NT
UHJvcGVydHk+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q1NTUHJvcGVydHkoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLSAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICByZXR1cm4gcHRyOwotICAg
IH0KLQotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYs
IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlw
ZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdENTU1Byb3Bl
cnR5KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAgICAgICAg
aWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJ
bXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwg
SlNDOjpIZWFwQW5hbHl6ZXImKTsKLXByb3RlY3RlZDoKLSAgICBKU1Rlc3RDU1NQcm9wZXJ0eShK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RDU1NQcm9wZXJ0eT4m
Jik7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0KLWNsYXNzIEpT
VGVzdENTU1Byb3BlcnR5T3duZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIg
ewotcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9y
JiwgY29uc3QgY2hhcioqKSBmaW5hbDsKLSAgICB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIGZpbmFsOwotfTsKLQotaW5saW5lIEpTQzo6V2Vh
a0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdENTU1Byb3Bl
cnR5KikKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0Q1NTUHJvcGVydHlPd25l
cj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdy
YXBwZXJLZXkoVGVzdENTU1Byb3BlcnR5KiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJu
IHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdENTU1Byb3BlcnR5Jik7Ci1pbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENTU1Byb3BlcnR5KiBpbXBsKSB7
IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICpp
bXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0Q1NTUHJvcGVy
dHk+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZlB0cjxUZXN0Q1NTUHJvcGVydHk+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRv
SlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJl
bGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBK
U0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdENTU1Byb3BlcnR5PiB7Ci0gICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNUZXN0Q1NTUHJvcGVydHk7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0
dXJuVHlwZSA9IFRlc3RDU1NQcm9wZXJ0eSo7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzNSBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKKyNpbmNsdWRl
ICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlND
bGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNE
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TbG90VmlzaXRvck1hY3Jvcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRl
clByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBBdHRyaWJ1dGVzCisKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGVfc2hhcmVkQXR0cmlidXRlMik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihz
ZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0
ZTIpOworCitjbGFzcyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0
RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZVByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlPih2bS5o
ZWFwKSkgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGUsIEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3IgPSBKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlPjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAg
IFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3Rv
dHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlRE9NQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlw
ZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAicHJvcGVydHkxIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEpIH0gfSwKKyAgICB7ICJw
cm9wZXJ0eTIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0
cmlidXRlMSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVk
QXR0cmlidXRlMSkgfSB9LAorICAgIHsgInByb3BlcnR5MyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxKSB9IH0sCisgICAgeyAicHJvcGVy
dHk0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0
ZTIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJp
YnV0ZTIpIH0gfSwKKyAgICB7ICJwcm9wZXJ0eTUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMiksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMikgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVz
dERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlOjppbmZvKCksIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90
b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRf
VFJBTlNJVElPTigpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZTo6c19pbmZvID0geyAiVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUpIH07
CisKK0pTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OkpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZT4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBzdGF0aWNf
YXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3Vi
Y2xhc3NlcyBBY3RpdmVET01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2Jh
bE9iamVjdCwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0
UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1
ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRy
aWJ1dGVET01Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4oY2VsbCk7CisgICAg
dGhpc09iamVjdC0+SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6fkpT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUoKTsKK30KKwordGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogSURMQXR0
cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpjYXN0KEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZSo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29uc3RydWN0b3IsIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJp
YnV0ZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJv
dG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUxR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlJiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExMZWdhY3lOdWxsVG9FbXB0eVN0cmluZ0FkYXB0b3I8SURM
VVNWU3RyaW5nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zaGFyZWRB
dHRyaWJ1dGUxKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpKSkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0
aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1
dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpnZXRQYXNzaW5nUHJvcGVydHlOYW1lPGpzVGVzdERlbGVn
YXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRlMUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTFTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMTGVnYWN5TnVs
bFRvRW1wdHlTdHJpbmdBZGFwdG9yPElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAg
ICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRTaGFy
ZWRBdHRyaWJ1dGUxKHByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpLCBXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTEsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+OjpzZXRQYXNzaW5n
UHJvcGVydHlOYW1lPHNldEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVf
c2hhcmVkQXR0cmlidXRlMVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVfc2hhcmVkQXR0cmlidXRl
MkdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmdBZGFwdG9y
PElETFVTVlN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc2hh
cmVkQXR0cmlidXRlMihwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSkpKSk7
Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlPjo6Z2V0UGFzc2luZ1Byb3BlcnR5TmFtZTxqc1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlX3NoYXJlZEF0dHJpYnV0ZTJHZXR0ZXIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2sobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNP
YmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETExlZ2Fj
eU51bGxUb0VtcHR5U3RyaW5nQWRhcHRvcjxJRExVU1ZTdHJpbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CisgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0
U2hhcmVkQXR0cmlidXRlMihwcm9wZXJ0eU5hbWVUb0F0b21TdHJpbmcocHJvcGVydHlOYW1lKSwg
V1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRp
Y0F0dHJpYnV0ZV9zaGFyZWRBdHRyaWJ1dGUyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPjo6c2V0UGFz
c2luZ1Byb3BlcnR5TmFtZTxzZXRKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlX3NoYXJlZEF0dHJpYnV0ZTJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2Uq
IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OnN1YnNwYWNlRm9ySW1w
bChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50
RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmdldCgpKQorICAgICAg
ICByZXR1cm4gc3BhY2U7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlPiB8fCAhSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6bmVl
ZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6
OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSk7CisgICAgZWxzZQorICAg
ICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0
cmlidXRlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZSk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIHZvaWQgKCpteVZpc2l0T3V0cHV0Q29uc3RyYWludCko
SlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzOworICAgIHZvaWQgKCpq
c0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpKEpTQzo6SlNDZWxsKiwgSlNDOjpTbG90VmlzaXRv
ciYpID0gSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAgaWYgKG15Vmlz
aXRPdXRwdXRDb25zdHJhaW50ICE9IGpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkKKyAgICAg
ICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lH
Tk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7
Cit9CisKK3ZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6YW5h
bHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZSo+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNl
bGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxs
LCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0
cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jv
b2wgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZU93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCosIEFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCit7
CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwor
ICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBK
U1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1
dG8qIGpzVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RGVsZWdh
dGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS0+d3JhcHBlZCgpLCBqc1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVH
UklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykK
K2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RE
ZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0K
KyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzOFRlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitK
U0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhl
dGljQXR0cmlidXRlPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CisgICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIo
aW1wbC5wdHIoKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxl
UG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlQFdlYkNvcmVAQDZCQCIpOworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTM4VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGVFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3REZWxlZ2F0
ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlv
dSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJp
YnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfcG9seW1vcnBoaWM8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU+Ojp2
YWx1ZSwgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlIGlzIG5vdCBwb2x5
bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVy
IGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdERlbGVnYXRlVG9TaGFy
ZWRTeW50aGV0aWNBdHRyaWJ1dGUgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAorICAg
IC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0RGVsZWdhdGVUb1NoYXJlZFN5
bnRoZXRpY0F0dHJpYnV0ZSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAg
IC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBp
bnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQ
b2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3Jl
YXRlV3JhcHBlcjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4oZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUmIGltcGwpCit7
CisgICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBs
KTsKK30KKworVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqIEpTVGVzdERl
bGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwg
SlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKj4odm0sIHZhbHVl
KSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRo
ZXRpY0F0dHJpYnV0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAg
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIu
aCIKKyNpbmNsdWRlICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUgOiBwdWJsaWMg
SlNET01XcmFwcGVyPFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlPiB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZT47CisgICAgc3RhdGljIEpTVGVzdERlbGVnYXRlVG9TaGFyZWRT
eW50aGV0aWNBdHRyaWJ1dGUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdERlbGVnYXRlVG9T
aGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRl
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6
Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90
b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIFRlc3REZWxl
Z2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6
SlNWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vi
c3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpT
Qzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vi
c3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpT
Qzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGlj
IHZvaWQgYW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3Byb3RlY3Rl
ZDoKKyAgICBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50
aGV0aWNBdHRyaWJ1dGU+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7
Cit9OworCitjbGFzcyBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlT3du
ZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIGJv
b2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwg
dm9pZCogY29udGV4dCwgSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpIGZpbmFsOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFw
cGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGUqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3REZWxlZ2F0ZVRv
U2hhcmVkU3ludGhldGljQXR0cmlidXRlT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIu
Z2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3REZWxlZ2F0ZVRvU2hhcmVk
U3ludGhldGljQXR0cmlidXRlKiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBw
YWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1
dGUmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRv
SlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVs
bCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNB
dHRyaWJ1dGU+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0
ZT4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVs
bCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxU
ZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZT4geworICAgIHVzaW5nIFdyYXBw
ZXJDbGFzcyA9IEpTVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU7CisgICAg
dXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzU4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTMgKzQxLDEzIEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9ucy5oIgogI2luY2x1ZGUgIkpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuaCIKLSNpbmNsdWRlICJKU1Rlc3RDU1NQcm9wZXJ0eS5oIgogI2luY2x1
ZGUgIkpTVGVzdENhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVGVzdERPTUpJVC5oIgogI2luY2x1ZGUgIkpT
VGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmgiCiAjaW5jbHVkZSAiSlNUZXN0
RGVmYXVsdFRvSlNPTkluaGVyaXQuaCIKICNpbmNsdWRlICJKU1Rlc3REZWZhdWx0VG9KU09OSW5o
ZXJpdEZpbmFsLmgiCisjaW5jbHVkZSAiSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTVGVzdERvbWFpblNlY3VyaXR5LmgiCiAjaW5jbHVkZSAi
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVGVzdEV2ZW50VGFyZ2V0Lmgi
CkBAIC0xNjcsNyArMTY3LDYgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNUZQogI2VuZGlmCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyQ29uc3RydWN0b3IpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3RDU1NQcm9wZXJ0eUNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbFRyYWNlckNvbnN0
cnVjdG9yKTsKICNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKIHN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q2FsbGJhY2tJbnRlcmZhY2VD
b25zdHJ1Y3Rvcik7CkBAIC0xNzcsNiArMTc2LDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0Rwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVj
dG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05Jbmhl
cml0RmluYWxDb25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVD
b25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xv
YmFsT2JqZWN0X1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKTsKQEAgLTIzOCw3ICsyMzgsNyBA
QCB1c2luZyBKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3RvciA9CiAKIC8qIEhhc2ggdGFi
bGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2Jh
bE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IDQwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0yODAsNyArMjgwLDcg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNSwgMjY3IH0sCisg
ICAgeyA2NSwgLTEgfSwKICAgICB7IDEzLCAyNjAgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAzOCwgLTEgfSwKICAgICB7IDE5
LCAyNTcgfSwKLSAgICB7IDcsIC0xIH0sCisgICAgeyA2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyA0NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzE1LDcgKzMxNSw3IEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDYsIC0xIH0sCisgICAgeyA1
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LApAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDEwLCAyNTYgfSwKKyAgICB7IDksIDI1NiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyA1NywgLTEgfSwKICAgICB7IDE4LCAtMSB9LApAQCAtMzkwLDcgKzM5MCw3IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IDQ3LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDExLCAtMSB9LAorICAgIHsgMTAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBA
IC00MzgsNyArNDM4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpT
VAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgLTEsIC0xIH0sCisgICAgeyAxMiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxMiwgLTEgfSwKKyAgICB7IDExLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDYz
LDEzICs0NjMsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA5
LCAtMSB9LAorICAgIHsgOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDgsIDI2MyB9LAotICAg
IHsgOCwgMjYyIH0sCisgICAgeyA3LCAyNjIgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNTks
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTUwNiw3ICs1MDYsNiBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyA1NCwgLTEgfSwKICAgICB7IDYwLCAt
MSB9LAogICAgIHsgNjQsIC0xIH0sCi0gICAgeyA2NSwgLTEgfSwKIH07CiAKIApAQCAtNTIxLDcg
KzUyMCw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICNlbmRp
ZgogICAgIHsgIlRlc3RDRVJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rl
c3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKLSAgICB7ICJUZXN0Q1NTUHJvcGVydHkiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
ICAgICB7ICJUZXN0Q2FsbFRyYWNlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RD
YWxsVHJhY2VyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjaWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwp
CiAgICAgeyAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RfVGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCkBAIC01MzMsNiArNTMx
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogICAgIHsgIlRl
c3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogICAgIHsgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdENvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAg
IHsgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RfVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAg
ICB7ICJUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdERvbWFpblNlY3VyaXR5Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAg
eyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RFdmVudFRhcmdl
dCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LApAQCAtODg5LDE3ICs4ODgsNiBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0R2xvYmFsT2JqCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3Ry
dWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5h
bWUpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RD
U1NQcm9wZXJ0eUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3RDU1NQcm9wZXJ0eTo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2Jq
ZWN0KTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9U
ZXN0Q1NTUHJvcGVydHlDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVO
YW1lKSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46Omdl
dDxqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENTU1Byb3BlcnR5Q29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJpYnV0ZU5hbWUpOwotfQotCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkBAIC05ODAsNiArOTY4LDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RHbG9iYWxPYmoKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWxD
b25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmli
dXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGVDb25zdHJ1Y3RvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0
aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4gSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsK
K30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVs
ZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RGVsZWdhdGVUb1NoYXJl
ZFN5bnRoZXRpY0F0dHJpYnV0ZUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0
aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9u
IDI3NTgwNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMjE3LDYxICsyMTgsMTEyIEBAIGNvbnN0IFNldHRpbmdzKiBD
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICByZXR1cm4gcGFyZW50RWxlbWVudCgpID8gJnBh
cmVudEVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5zZXR0aW5ncygpIDogbnVsbHB0cjsKIH0KIAotI2lm
ICFFTkFCTEUoQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNMQVJB
VElPTikKK2VudW0gY2xhc3MgQ1NTUHJvcGVydHlMb29rdXBNb2RlIHsgQ29udmVydFVzaW5nRGFz
aFByZWZpeCwgQ29udmVydFVzaW5nTm9EYXNoUHJlZml4LCBOb0NvbnZlcnNpb24gfTsKIAotT3B0
aW9uYWw8VmFyaWFudDxTdHJpbmcsIGRvdWJsZT4+IENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVk
SXRlbShjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZTxDU1NQcm9wZXJ0
eUxvb2t1cE1vZGUgbW9kZT4gc3RhdGljIENTU1Byb3BlcnR5SUQgbG9va3VwQ1NTUHJvcGVydHlG
cm9tSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSkKIHsKLSAgICAvLyBG
SVhNRTogVGhpcyBpcyBnb2luZyB0byByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIGNzcyBw
cm9wZXJ0aWVzIGRpc2FibGVkIGJ5IFNldHRpbmdzIGlmIHNldHRpbmdzKCkgcmV0dXJucyBudWxs
cHRyLgotICAgIGF1dG8gcHJvcGVydHlJRCA9IHByb3BlcnR5SURGcm9tSmF2YVNjcmlwdENTU1By
b3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsIHNldHRpbmdzKCkpOwotICAgIGlmICghcHJvcGVydHlJ
RCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaE1hcDxBdG9tU3RyaW5nLCBDU1NQcm9wZXJ0eUlEPj4gY2FjaGU7CiAKLSAgICBpZiAo
YXV0byB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKSkKLSAg
ICAgICAgcmV0dXJuIFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+IHsgdmFsdWUtPmNzc1RleHQoKSB9
OworICAgIGlmIChhdXRvIGlkID0gY2FjaGUuZ2V0KCkuZ2V0KGF0dHJpYnV0ZSkpCisgICAgICAg
IHJldHVybiBpZDsKKworICAgIGNoYXIgb3V0cHV0QnVmZmVyW21heENTU1Byb3BlcnR5TmFtZUxl
bmd0aCArIDFdOworICAgIGNoYXIqIG91dHB1dEJ1ZmZlckN1cnJlbnQgPSBvdXRwdXRCdWZmZXI7
CisgICAgY29uc3QgY2hhciogb3V0cHV0QnVmZmVyU3RhcnQgPSBvdXRwdXRCdWZmZXJDdXJyZW50
OworCisgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29u
dmVydFVzaW5nRGFzaFByZWZpeCB8fCBtb2RlID09IENTU1Byb3BlcnR5TG9va3VwTW9kZTo6Q29u
dmVydFVzaW5nTm9EYXNoUHJlZml4KSB7CisgICAgICAgIC8vIENvbnZlcnNpb24gaXMgaW1wbGVt
ZW50aW5nIHRoZSAiSURMIGF0dHJpYnV0ZSB0byBDU1MgcHJvcGVydHkgYWxnb3JpdGhtIgorICAg
ICAgICAvLyBmcm9tIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jaWRsLWF0dHJpYnV0
ZS10by1jc3MtcHJvcGVydHkuCisKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IENTU1By
b3BlcnR5TG9va3VwTW9kZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeCkKKyAgICAgICAgICAgICpv
dXRwdXRCdWZmZXJDdXJyZW50KysgPSAnLSc7CisKKyAgICAgICAgcmVhZENoYXJhY3RlcnNGb3JQ
YXJzaW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8gYnVmZmVyKSB7CisgICAgICAgICAgICB3aGlsZSAo
YnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgeworICAgICAgICAgICAgICAgIGF1dG8g
YyA9ICpidWZmZXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGlzQVND
SUkoYyksICJJbnZhbGlkIHByb3BlcnR5IG5hbWU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9ICctJzsKKyAgICAgICAg
ICAgICAgICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9IHRvQVNDSUlMb3dlclVuY2hlY2tl
ZChjKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKm91dHB1
dEJ1ZmZlckN1cnJlbnQrKyA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAg
ICAqb3V0cHV0QnVmZmVyQ3VycmVudCA9ICdcMCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVh
ZENoYXJhY3RlcnNGb3JQYXJzaW5nKGF0dHJpYnV0ZSwgWyZdKGF1dG8gYnVmZmVyKSB7CisgICAg
ICAgICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgeworICAgICAg
ICAgICAgICAgIGF1dG8gYyA9ICpidWZmZXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGMgPT0gJy0nIHx8IGlzQVNDSUlMb3dlcihjKSwgIkludmFsaWQgcHJvcGVydHkg
bmFtZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICAgICAgKm91dHB1dEJ1ZmZlckN1cnJlbnQrKyA9IGM7CisgICAgICAgICAgICB9CisgICAgICAg
IH0pOworICAgICAgICAqb3V0cHV0QnVmZmVyQ3VycmVudCA9ICdcMCc7CisgICAgfQogCi0gICAg
Ly8gSWYgdGhlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IChzdWNoIGFzICJwYWRk
aW5nIiksIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFsdWVJbnRl
cm5hbC4KLSAgICByZXR1cm4gVmFyaWFudDxTdHJpbmcsIGRvdWJsZT4geyBnZXRQcm9wZXJ0eVZh
bHVlSW50ZXJuYWwocHJvcGVydHlJRCkgfTsKKyAgICBhdXRvIGhhc2hUYWJsZUVudHJ5ID0gZmlu
ZFByb3BlcnR5KG91dHB1dEJ1ZmZlclN0YXJ0LCBvdXRwdXRCdWZmZXJDdXJyZW50IC0gb3V0cHV0
QnVmZmVyKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGhhc2hUYWJsZUVudHJ5LCAiSW52YWxp
ZCBwcm9wZXJ0eSBuYW1lOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIGF1dG8gaWQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihoYXNoVGFibGVFbnRy
eS0+aWQpOworICAgIGNhY2hlLmdldCgpLmFkZChhdHRyaWJ1dGUsIGlkKTsKKyAgICByZXR1cm4g
aWQ7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlRGVjbGFyYXRpb246OnNldE5hbWVk
SXRlbShjb25zdCBBdG9tU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFN0cmluZyB2YWx1ZSwgYm9vbCYg
cHJvcGVydHlTdXBwb3J0ZWQpCitTdHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlW
YWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRl
KQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGdvaW5nIHRvIHJldHVybiBpbmNvcnJlY3QgcmVz
dWx0cyBmb3IgY3NzIHByb3BlcnRpZXMgZGlzYWJsZWQgYnkgU2V0dGluZ3MgaWYgc2V0dGluZ3Mo
KSByZXR1cm5zIG51bGxwdHIuCi0gICAgYXV0byBwcm9wZXJ0eUlEID0gcHJvcGVydHlJREZyb21K
YXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSwgc2V0dGluZ3MoKSk7Ci0gICAg
aWYgKCFwcm9wZXJ0eUlEKSB7Ci0gICAgICAgIHByb3BlcnR5U3VwcG9ydGVkID0gZmFsc2U7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfQorICAgIGF1dG8gcHJvcGVydHlJRCA9IGxvb2t1cENT
U1Byb3BlcnR5RnJvbUlETEF0dHJpYnV0ZTxDU1NQcm9wZXJ0eUxvb2t1cE1vZGU6OkNvbnZlcnRV
c2luZ05vRGFzaFByZWZpeD4oYXR0cmlidXRlKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHBy
b3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxpZCBhdHRyaWJ1dGU6ICVzIiwg
YXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnZXRQcm9wZXJ0
eVZhbHVlSW50ZXJuYWwocHJvcGVydHlJRCk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU1N0
eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5VmFsdWVGb3JDYW1lbENhc2VkSURMQXR0cmlidXRl
KGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGU8Q1NT
UHJvcGVydHlMb29rdXBNb2RlOjpDb252ZXJ0VXNpbmdOb0Rhc2hQcmVmaXg+KGF0dHJpYnV0ZSk7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxp
ZCwgIkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCB2YWx1ZSwg
ZmFsc2UpOworfQogCi0gICAgcHJvcGVydHlTdXBwb3J0ZWQgPSB0cnVlOwotICAgIHJldHVybiBz
ZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIFdURk1vdmUodmFsdWUpLCBmYWxzZSk7CitT
dHJpbmcgQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURM
QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSkKK3sKKyAgICBhdXRvIHByb3Bl
cnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1dGU8Q1NTUHJvcGVydHlMb29r
dXBNb2RlOjpDb252ZXJ0VXNpbmdEYXNoUHJlZml4PihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0
dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKIH0KIAotVmVjdG9yPEF0
b21TdHJpbmc+IENTU1N0eWxlRGVjbGFyYXRpb246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSBj
b25zdAorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlW
YWx1ZUZvcldlYktpdENhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgbnVtTmFtZXMg
PSAwOwotICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nKiBjb25zdCBjc3NQcm9wZXJ0eU5hbWVz
ID0gW3RoaXNdIHsKLSAgICAgICAgU3RyaW5nIG5hbWVzW251bUNTU1Byb3BlcnRpZXNdOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkgewotICAgICAg
ICAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGZpcnN0
Q1NTUHJvcGVydHkgKyBpKTsKLSAgICAgICAgICAgIGlmIChpc0VuYWJsZWRDU1NQcm9wZXJ0eShp
ZCkgJiYgaXNDU1NQcm9wZXJ0eUVuYWJsZWRCeVNldHRpbmdzKGlkLCBzZXR0aW5ncygpKSkKLSAg
ICAgICAgICAgICAgICBuYW1lc1tudW1OYW1lcysrXSA9IGdldEpTUHJvcGVydHlOYW1lKGlkKTsK
LSAgICAgICAgfQotICAgICAgICBzdGQ6OnNvcnQoJm5hbWVzWzBdLCAmbmFtZXNbbnVtTmFtZXNd
LCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7Ci0gICAgICAgIGF1dG8qIGlkZW50aWZp
ZXJzID0gbmV3IEF0b21TdHJpbmdbbnVtTmFtZXNdOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtTmFtZXM7ICsraSkKLSAgICAgICAgICAgIGlkZW50aWZpZXJzW2ldID0gbmFt
ZXNbaV07Ci0gICAgICAgIHJldHVybiBpZGVudGlmaWVyczsKLSAgICB9KCk7CisgICAgYXV0byBw
cm9wZXJ0eUlEID0gbG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5
TG9va3VwTW9kZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeD4oYXR0cmlidXRlKTsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxp
ZCBhdHRyaWJ1dGU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxzZSk7Cit9
CiAKLSAgICBWZWN0b3I8QXRvbVN0cmluZz4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG51bU5hbWVzKTsKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpwcm9w
ZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0
ZSkKK3sKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRy
aWJ1dGU8Q1NTUHJvcGVydHlMb29rdXBNb2RlOjpOb0NvbnZlcnNpb24+KGF0dHJpYnV0ZSk7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwg
IkludmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpOworfQog
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU5hbWVzOyArK2kpCi0gICAgICAgIHJl
c3VsdC51bmNoZWNrZWRBcHBlbmQoY3NzUHJvcGVydHlOYW1lc1tpXSk7CitFeGNlcHRpb25Pcjx2
b2lkPiBDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eVZhbHVlRm9yRGFzaGVkSURMQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21JRExBdHRyaWJ1
dGU8Q1NTUHJvcGVydHlMb29rdXBNb2RlOjpOb0NvbnZlcnNpb24+KGF0dHJpYnV0ZSk7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5SW52YWxpZCwgIklu
dmFsaWQgYXR0cmlidXRlOiAlcyIsIGF0dHJpYnV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCB2YWx1ZSwgZmFsc2Up
OworfQogCi0gICAgcmV0dXJuIHJlc3VsdDsKK1N0cmluZyBDU1NTdHlsZURlY2xhcmF0aW9uOjpw
cm9wZXJ0eVZhbHVlRm9yRXB1YkNhc2VkSURMQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGF0
dHJpYnV0ZSkKK3sKKyAgICBhdXRvIHByb3BlcnR5SUQgPSBsb29rdXBDU1NQcm9wZXJ0eUZyb21J
RExBdHRyaWJ1dGU8Q1NTUHJvcGVydHlMb29rdXBNb2RlOjpDb252ZXJ0VXNpbmdEYXNoUHJlZml4
PihhdHRyaWJ1dGUpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocHJvcGVydHlJRCAhPSBDU1NQ
cm9wZXJ0eUludmFsaWQsICJJbnZhbGlkIGF0dHJpYnV0ZTogJXMiLCBhdHRyaWJ1dGUuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChw
cm9wZXJ0eUlEKTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0UHJvcGVydHlWYWx1ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5n
JiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgYXV0byBwcm9wZXJ0eUlE
ID0gbG9va3VwQ1NTUHJvcGVydHlGcm9tSURMQXR0cmlidXRlPENTU1Byb3BlcnR5TG9va3VwTW9k
ZTo6Q29udmVydFVzaW5nRGFzaFByZWZpeD4oYXR0cmlidXRlKTsKKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkLCAiSW52YWxpZCBhdHRyaWJ1
dGU6ICVzIiwgYXR0cmlidXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBz
ZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHZhbHVlLCBmYWxzZSk7CiB9Ci0jZW5kaWYK
IAogU3RyaW5nIENTU1N0eWxlRGVjbGFyYXRpb246OmNzc0Zsb2F0KCkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gMjc1ODA3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsMTIgKzc0LDI1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgU2V0dGluZ3Mq
IHNldHRpbmdzKCkgY29uc3Q7CiAKLSNpZiAhRU5BQkxFKEFUVFJJQlVURV9CQVNFRF9QUk9QRVJU
SUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04pCi0gICAgLy8gTmFtZWQtaXRlbSBiYXNlZCBp
bXBsZW1lbnRhdGlvbiBzdXBwb3J0LgotICAgIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBkb3Vi
bGU+PiBuYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmluZyYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldE5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBTdHJpbmcgdmFsdWUsIGJvb2wm
IHByb3BlcnR5U3VwcG9ydGVkKTsKLSAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpIGNvbnN0OwotI2VuZGlmCisgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG1v
cmUgZWZmaWNpZW50LCBieSB2aXJ0dWUgb2YgYXZvaWRpbmcgdGhlIHRleHQgdHJhbnNmb3JtYXRp
b24gYW5kIGhhc2ggbG9va3VwIGN1cnJlbnRseQorICAgIC8vIHJlcXVpcmVkIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbiwgaWYgd2UgY291bGQgY291bGQgc211Z2dsZSB0aGUgQ1NTUHJvcGVydHlJRCB0
aHJvdWdoIHRoZSBiaW5kaW5ncywgcGVyaGFwcworICAgIC8vIGJ5IGVuY29kaW5nIGl0IGludG8g
dGhlIEhhc2hUYWJsZVZhbHVlIGFuZCB0aGVuIHBhc3NpbmcgaXQgdG9nZXRoZXIgd2l0aCB0aGUg
UHJvcGVydHlOYW1lLgorCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJv
cGVydGllcyB0aGF0IG1hdGNoIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jZG9tLWNz
c3N0eWxlZGVjbGFyYXRpb24tY2FtZWxfY2FzZWRfYXR0cmlidXRlLgorICAgIFN0cmluZyBwcm9w
ZXJ0eVZhbHVlRm9yQ2FtZWxDYXNlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvckNhbWVsQ2FzZWRJRExBdHRy
aWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gU2hhcmVk
IGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJvcGVydGllcyB0aGF0IG1hdGNoIGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy9jc3NvbS8jZG9tLWNzc3N0eWxlZGVjbGFyYXRpb24td2Via2l0X2Nhc2Vk
X2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcgcHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURMQXR0
cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9w
ZXJ0eVZhbHVlRm9yV2ViS2l0Q2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFN0cmluZyYpOworCisgICAgLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciBhbGwgcHJv
cGVydGllcyB0aGF0IG1hdGNoIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8jZG9tLWNz
c3N0eWxlZGVjbGFyYXRpb24tZGFzaGVkX2F0dHJpYnV0ZS4KKyAgICBTdHJpbmcgcHJvcGVydHlW
YWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0UHJvcGVydHlWYWx1ZUZvckRhc2hlZElETEF0dHJpYnV0ZShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBTaGFyZWQgaW1wbGVtZW50YXRp
b24gZm9yIGFsbCBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggbm9uLXN0YW5kYXJkIEVwdWItY2FzZWQu
CisgICAgU3RyaW5nIHByb3BlcnR5VmFsdWVGb3JFcHViQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3Qg
QXRvbVN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5VmFsdWVGb3JF
cHViQ2FzZWRJRExBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gcGFzcyBpbiBhIFNldHRpbmdzJiB0byB3b3Jr
IGNvcnJlY3RseS4KICAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBnZXRDU1NQcm9wZXJ0eUlERnJv
bUphdmFTY3JpcHRQcm9wZXJ0eU5hbWUoY29uc3QgQXRvbVN0cmluZyYpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAkocmV2aXNpb24gMjc1ODA3KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw5ICsyNSw2IEBACiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgU2tp
cFZUYWJsZVZhbGlkYXRpb24sCiAgICAgRXhwb3NlZD1XaW5kb3csCi0jaWYgIWRlZmluZWQoRU5B
QkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZTEVfREVDTEFSQVRJT04p
IHx8ICFFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNM
QVJBVElPTgotICAgIERlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eQotI2VuZGlmCiBdIGludGVyZmFj
ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHsKICAgICAvLyBGSVhNRTogVGhlc2UgYXR0cmlidXRlcyBh
bmQgZnVuY3Rpb25zIHNob3VsZCB1c2UgQ1NTT01TdHJpbmcgbm90IERPTVN0cmluZy4KIApAQCAt
NDYsMTIgKzQzLDQgQEAKICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5U2hvcnRoYW5kKG9wdGlv
bmFsIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAgIGJvb2xlYW4gaXNQcm9wZXJ0eUltcGxp
Y2l0KG9wdGlvbmFsIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAgIERlcHJlY2F0ZWRDU1NP
TVZhbHVlPyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwotCi0j
aWYgIWRlZmluZWQoRU5BQkxFX0FUVFJJQlVURV9CQVNFRF9QUk9QRVJUSUVTX0ZPUl9DU1NfU1RZ
TEVfREVDTEFSQVRJT04pIHx8ICFFTkFCTEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9S
X0NTU19TVFlMRV9ERUNMQVJBVElPTgotICAgIC8vIFVzZSBuYW1lZCBnZXR0ZXJzL3NldHRlcnMg
Zm9yIGFsbCBzdXBwb3J0IENTUyBwcm9wZXJ0eSBuYW1lcy4gVGhlIHNwZWMgc2F5cwotICAgIC8v
IHRoZXNlIHNob3VsZCBiZSBub3JtYWwgYXR0cmlidXRlcywgYnV0IHRoZXJlIGFyZSB0b28gbWFu
eSBjb21iaW5hdGlvbnMgd2l0aAotICAgIC8vIHByZWZpeGVzIGZvciB0aGlzIHRvIGJlIHByYWN0
aWNhbCB3aXRoIGN1cnJlbnQgY29kZSBnZW5lcmF0aW9uLgotICAgIGdldHRlciAoRE9NU3RyaW5n
IG9yIGRvdWJsZSkgKERPTVN0cmluZyBuYW1lKTsKLSAgICBbQ0VSZWFjdGlvbnMsIENhbGxOYW1l
ZFNldHRlck9ubHlGb3JTdXBwb3J0ZWRQcm9wZXJ0aWVzXSBzZXR0ZXIgdW5kZWZpbmVkIChET01T
dHJpbmcgbmFtZSwgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUpOwot
I2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAkocmV2aXNpb24gMjc1ODA3KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA5
LDggKzE0MDksNiBAQCB0eXBlZGVmIFVTVlN0cmluZyBDU1NPTVN0cmluZzsKIAogcGFydGlhbCBp
bnRlcmZhY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7CiAKLSNpZiBkZWZpbmVkKEVOQUJMRV9BVFRS
SUJVVEVfQkFTRURfUFJPUEVSVElFU19GT1JfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKSAmJiBFTkFC
TEVfQVRUUklCVVRFX0JBU0VEX1BST1BFUlRJRVNfRk9SX0NTU19TVFlMRV9ERUNMQVJBVElPTgot
CiBFT0YKIAogcHJpbnQgQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OX1BST1BFUlRZX05BTUVTX0lETCA8
PCAiRU9GIjsKQEAgLTE0MjcsNyArMTQyNSw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChA
bmFtZXNBbmRBbGlhc2UKICAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5h
bWVPckFsaWFzfTsKICAgICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlh
c2VzVG9OYW1leyRuYW1lfX07CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAo
IkNTU1Byb3BlcnR5PSR7cHJvcGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVW
YWx1ZXMgPSAoIkRlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1
ZUZvckNhbWVsQ2FzZWRJRExBdHRyaWJ1dGUiLCAiQ2FsbFdpdGg9UHJvcGVydHlOYW1lIik7CiAg
ICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQnlTZXR0aW5nPSR7c2V0
dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7JG5hbWV9OwogICAgIHB1c2go
QGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVudGltZT0ke3J1bnRpbWVGbGFn
c3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzKTsKQEAgLTE0NTAs
NyArMTQ0OCw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChncmVwIHsgJF8gPX4gL14KICAg
ICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5hbWVPckFsaWFzfTsKICAgICBt
eSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lfX07
CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkNTU1Byb3BlcnR5PSR7cHJv
cGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAoIkRlbGVnYXRl
VG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1ZUZvcldlYktpdENhc2VkSURM
QXR0cmlidXRlIiwgIkNhbGxXaXRoPVByb3BlcnR5TmFtZSIpOwogICAgIHB1c2goQGV4dGVuZGVk
QXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEJ5U2V0dGluZz0ke3NldHRpbmdzRmxhZ3N7JG5hbWV9
fSIpIGlmICRzZXR0aW5nc0ZsYWdzeyRuYW1lfTsKICAgICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0
ZVZhbHVlcywgIkVuYWJsZWRBdFJ1bnRpbWU9JHtydW50aW1lRmxhZ3N7JG5hbWV9fSIpIGlmICRy
dW50aW1lRmxhZ3N7JG5hbWV9OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSBqb2luKCIs
ICIsIEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcyk7CkBAIC0xNDcyLDcgKzE0NzAsNyBAQCBmb3Jl
YWNoIG15ICRuYW1lT3JBbGlhcyAoZ3JlcCB7ICRfID1+IC9cCiAgICAgbXkgJG5hbWUgPSAkbmFt
ZXNBbmRBbGlhc2VzVG9OYW1leyRuYW1lT3JBbGlhc307CiAgICAgbXkgJHByb3BlcnR5SWQgPSAk
bmFtZVRvSWR7JG5hbWVzQW5kQWxpYXNlc1RvTmFtZXskbmFtZX19OwogCi0gICAgbXkgQGV4dGVu
ZGVkQXR0cmlidXRlVmFsdWVzID0gKCJDU1NQcm9wZXJ0eT0ke3Byb3BlcnR5SWR9Iik7CisgICAg
bXkgQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzID0gKCJEZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGlj
QXR0cmlidXRlPXByb3BlcnR5VmFsdWVGb3JEYXNoZWRJRExBdHRyaWJ1dGUiLCAiQ2FsbFdpdGg9
UHJvcGVydHlOYW1lIik7CiAgICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFi
bGVkQnlTZXR0aW5nPSR7c2V0dGluZ3NGbGFnc3skbmFtZX19IikgaWYgJHNldHRpbmdzRmxhZ3N7
JG5hbWV9OwogICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlVmFsdWVzLCAiRW5hYmxlZEF0UnVu
dGltZT0ke3J1bnRpbWVGbGFnc3skbmFtZX19IikgaWYgJHJ1bnRpbWVGbGFnc3skbmFtZX07CiAg
ICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9IGpvaW4oIiwgIiwgQGV4dGVuZGVkQXR0cmlidXRl
VmFsdWVzKTsKQEAgLTE0OTQsNyArMTQ5Miw3IEBAIGZvcmVhY2ggbXkgJG5hbWVPckFsaWFzIChn
cmVwIHsgJF8gPX4gL14KICAgICBteSAkbmFtZSA9ICRuYW1lc0FuZEFsaWFzZXNUb05hbWV7JG5h
bWVPckFsaWFzfTsKICAgICBteSAkcHJvcGVydHlJZCA9ICRuYW1lVG9JZHskbmFtZXNBbmRBbGlh
c2VzVG9OYW1leyRuYW1lfX07CiAKLSAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMgPSAo
IkNTU1Byb3BlcnR5PSR7cHJvcGVydHlJZH0iKTsKKyAgICBteSBAZXh0ZW5kZWRBdHRyaWJ1dGVW
YWx1ZXMgPSAoIkRlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGU9cHJvcGVydHlWYWx1
ZUZvckVwdWJDYXNlZElETEF0dHJpYnV0ZSIsICJDYWxsV2l0aD1Qcm9wZXJ0eU5hbWUiKTsKICAg
ICBwdXNoKEBleHRlbmRlZEF0dHJpYnV0ZVZhbHVlcywgIkVuYWJsZWRCeVNldHRpbmc9JHtzZXR0
aW5nc0ZsYWdzeyRuYW1lfX0iKSBpZiAkc2V0dGluZ3NGbGFnc3skbmFtZX07CiAgICAgcHVzaChA
ZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMsICJFbmFibGVkQXRSdW50aW1lPSR7cnVudGltZUZsYWdz
eyRuYW1lfX0iKSBpZiAkcnVudGltZUZsYWdzeyRuYW1lfTsKICAgICBteSAkZXh0ZW5kZWRBdHRy
aWJ1dGVzID0gam9pbigiLCAiLCBAZXh0ZW5kZWRBdHRyaWJ1dGVWYWx1ZXMpOwpAQCAtMTUwMyw4
ICsxNTAxLDYgQEAgZm9yZWFjaCBteSAkbmFtZU9yQWxpYXMgKGdyZXAgeyAkXyA9fiAvXgogfQog
CiBwcmludCBDU1NfU1RZTEVfREVDTEFSQVRJT05fUFJPUEVSVFlfTkFNRVNfSURMIDw8ICJFT0Yi
OwotCi0jZW5kaWYKIH07CiAKIEVPRgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1ODA3KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEt
MDQtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBj
b21waWxlIHRpbWUgYW5kIGJpbmFyeSBzaXplIGNvc3Qgb2YgZW5hYmxpbmcgcHJvcGVyIENTU1N0
eWxlRGVjbGFyYXRpb24gcHJvcGVydHkgYWNjZXNzIGJlaGF2aW9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1MTgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc1MTM2ODg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWw6Cisg
ICAgICAgICogZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24uaHRtbDoKKyAgICAgICAgUmVtb3ZlIGV4
aXN0aW5nIHRlc3RzIGZvciBpdGVyYXRpb24gb3JkZXIsIHdoaWNoIGlzIG5vdCBzdGFuZGFyZGl6
ZWQsIGFuZCBub3QgY29uc2lzdGVudCBhbW9uZworICAgICAgICBicm93c2Vycy4gQWRkcyBhIG5l
dyBvbmUgdGhhdCBjaGVja3MgaW52YXJpYW50cyBvZiB0aGUgNCBncm91cGluZ3Mgb2YgcHJvcGVy
dGllcyB3aGljaCB3ZSBjdXJyZW50bHkKKyAgICAgICAgZXhwZWN0IHRvIGhvbGQsIGF0IGxlYXN0
IGluIG91ciBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIGZhc3QvZG9tL0NTU1N0eWxlRGVj
bGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3ItZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVk
ZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3IuaHRtbDoKKyAgICAgICAgVXBkYXRlIG5v
dyB0aGF0IHRoZSBwcm9wZXJ0aWVzIGFyZSBwcm9wZXIgYXR0cmlidXRlcyBvbiB0aGUgcHJvdG90
eXBlLgorCisgICAgICAgICoganMvZG9tL3B1dC1vdmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy5o
dG1sOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgYSBET01TdHJpbmdMaXN0IGFzIHRoZSBvYmpl
Y3QgdGhhdCBvdmVycmlkZXMgcHV0LCBzaW5jZSBDU1NTdHlsZURlY2xhcmF0aW9uIG5vIGxvbmdl
ciBkb2VzLgorCisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy5odG1s
OgorICAgICAgICBSZW1vdmUgT2JqZWN0LmtleXMoKSBhc3BlY3Qgb2YgdGhlIHRlc3QsIHdoaWNo
IGlzIG5vIGxvbmdlciBtZWFuaW5nZnVsIHNpbmNlIHRoZQorICAgICAgICBwcm9wZXJ0aWVzIHNo
b3VsZCBubyBsb25nZXIgZXhpc3QgaW4gdGhlIHJlc3VsdCBzZXQuCisKIDIwMjEtMDQtMTAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyNzU2
NjgpIFBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWYgaW4gQXVkaW9QYXJhbTo6ZXhwb25lbnRp
YWxSYW1wVG9WYWx1ZUF0VGltZShmbG9hdCwgZG91YmxlKQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc1ODA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUt
ZW51bWVyYXRlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3
ICsxMSwzMiBAQCBQQVNTICdXZWJraXRUcmFuc2Zvcm0nIGluIGRvY3VtZW50LmJvZHkuCiBQQVNT
ICdib2d1cy1yYW5kb20tU3RyaW5nJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIGlzIGZhbHNlCiBQ
QVNTICdjc3NUZXh0JyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIGlzIHRydWUKIFBBU1MgJ2dldFBy
b3BlcnR5Q1NTVmFsdWUnIGluIGRvY3VtZW50LmJvZHkuc3R5bGUgaXMgdHJ1ZQotUEFTUyBUaGUg
Q1NTIHByb3BlcnR5IG9yZGVyIGlzIGNvcnJlY3QKK1BBU1MgaW5pdGlhbEluZGV4T2ZHcm91cDIg
PiBpbml0aWFsSW5kZXhPZkdyb3VwMSBpcyB0cnVlCitQQVNTIGluaXRpYWxJbmRleE9mR3JvdXAz
ID4gaW5pdGlhbEluZGV4T2ZHcm91cDIgaXMgdHJ1ZQorUEFTUyBpbml0aWFsSW5kZXhPZkdyb3Vw
NCA+IGluaXRpYWxJbmRleE9mR3JvdXAzIGlzIHRydWUKK1BBU1MgaW5pdGlhbEluZGV4T2ZHcm91
cDUgPiBpbml0aWFsSW5kZXhPZkdyb3VwNCBpcyB0cnVlCitQQVNTIGluaXRpYWxJbmRleE9mR3Jv
dXA2ID4gaW5pdGlhbEluZGV4T2ZHcm91cDUgaXMgdHJ1ZQorUEFTUyBncm91cDEgaXMgWyIwIiwg
IjEiLCAiY3NzVGV4dCIsICJsZW5ndGgiLCAicGFyZW50UnVsZSIsICJjc3NGbG9hdCJdCitQQVNT
IGdyb3VwMiBpcyBncm91cDJDbG9uZQorUEFTUyBncm91cDIuc29tZShwcm9wZXJ0eSA9PiBwcm9w
ZXJ0eS5zdGFydHNXaXRoKCJXZWJraXQiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDIuc29tZShwcm9w
ZXJ0eSA9PiBwcm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikpIGlzIHRydWUKK1BBU1MgZ3JvdXAy
LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5pbmNsdWRlcygiLSIpKSBpcyB0cnVlCitQQVNT
IGdyb3VwMyBpcyBncm91cDNDbG9uZQorUEFTUyBncm91cDMuZXZlcnkocHJvcGVydHkgPT4gIXBy
b3BlcnR5LnN0YXJ0c1dpdGgoIldlYmtpdCIpKSBpcyB0cnVlCitQQVNTIGdyb3VwMy5ldmVyeShw
cm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgiRXB1YiIpKSBpcyB0cnVlCitQQVNTIGdy
b3VwMy5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuaW5jbHVkZXMoIi0iKSkgaXMgdHJ1ZQor
UEFTUyBncm91cDMuZXZlcnkocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgid2Via2l0
IikpIGlzIHRydWUKK1BBU1MgZ3JvdXA0IGlzIGdyb3VwNENsb25lCitQQVNTIGdyb3VwNC5ldmVy
eShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgiV2Via2l0IikpIGlzIHRydWUKK1BB
U1MgZ3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikp
IGlzIHRydWUKK1BBU1MgZ3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNX
aXRoKCJ3ZWJraXQiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDQuZXZlcnkocHJvcGVydHkgPT4gcHJv
cGVydHkuaW5jbHVkZXMoIi0iKSkgaXMgdHJ1ZQorUEFTUyBncm91cDUgaXMgZ3JvdXA1Q2xvbmUK
K1BBU1MgZ3JvdXA1LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJXZWJr
aXQiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDUuZXZlcnkocHJvcGVydHkgPT4gIXByb3BlcnR5LnN0
YXJ0c1dpdGgoIkVwdWIiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDUuZXZlcnkocHJvcGVydHkgPT4g
IXByb3BlcnR5LmluY2x1ZGVzKCItIikpIGlzIHRydWUKK1BBU1MgZ3JvdXA1LmV2ZXJ5KHByb3Bl
cnR5ID0+IHByb3BlcnR5LnN0YXJ0c1dpdGgoImVwdWIiKSkgaXMgdHJ1ZQorUEFTUyBncm91cDYg
aXMgWyJpdGVtIiwgImdldFByb3BlcnR5VmFsdWUiLCAiZ2V0UHJvcGVydHlQcmlvcml0eSIsICJz
ZXRQcm9wZXJ0eSIsICJyZW1vdmVQcm9wZXJ0eSIsICJnZXRQcm9wZXJ0eVNob3J0aGFuZCIsICJp
c1Byb3BlcnR5SW1wbGljaXQiLCAiZ2V0UHJvcGVydHlDU1NWYWx1ZSJdCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY3NzL3N0eWxlLWVudW1lcmF0ZS1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3BlcnRpZXMuaHRtbAkocmV2aXNp
b24gMjc1ODA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtZW51bWVyYXRlLXByb3Bl
cnRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxMyBAQAogPGhlYWQ+CiAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0KLQotICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHkgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBib3JkZXItdG9wLWNvbG9yOiBn
cmVlbiI+CiAgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
YXQgQ1NTU3R5bGVEZWNsYXJhdGlvbiBlbnVtZXJhdGVzIEphdmFTY3JpcHQgcHJvcGVydGllcyBm
b3IgZGVmaW5lZCBhbmQgbm9uLWRlZmluZWQgQ1NTIHByb3BlcnRpZXMsIGluZGV4ZWQgcHJvcGVy
dGllcywgYW5kIHByb3BlcnRpZXMgZGVmaW5lZCBvbiB0aGUgcHJvdG90eXBlLiBTZWUgPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQ2Ij5CdWcgMjM5
NDY8L2E+LjwvZGl2PgogICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogICAgIDxzY3JpcHQ+
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworCiAgICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5ib2R5LnN0eWxlLmxl
bmd0aCIsICIyIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiJzAnIGluIGRvY3VtZW50LmJvZHku
c3R5bGUiKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCInMScgaW4gZG9jdW1lbnQuYm9keS5zdHls
ZSIpOwpAQCAtMjMsMzMgKzIwLDg1IEBACiAgICAgICAgIHNob3VsZEJlRmFsc2UoIidib2d1cy1y
YW5kb20tU3RyaW5nJyBpbiBkb2N1bWVudC5ib2R5LnN0eWxlIik7CiAgICAgICAgIHNob3VsZEJl
VHJ1ZSgiJ2Nzc1RleHQnIGluIGRvY3VtZW50LmJvZHkuc3R5bGUiKTsKICAgICAgICAgc2hvdWxk
QmVUcnVlKCInZ2V0UHJvcGVydHlDU1NWYWx1ZScgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSIpOwor
ICAgICAgICAKKyAgICAgICAgLy8gVGVzdCBpbnZhcmlhbnRzIG9uIHRoZSBvcmRlciBvZiB0aGUg
ZW51bWVyYXRlZCBwcm9wZXJ0aWVzLiBUaGVzZSBhcmUgbm90IGluIHRoZSBzcGVjLCBidXQgd2UK
KyAgICAgICAgLy8gY3VycmVudGx5IGV4cGVjdCB0aGVtIHRvIGhvbGQuCisgICAgICAgIC8vIC0g
NiBncm91cGluZ3MKKyAgICAgICAgLy8uICAtIDFzdCBncm91cGluZyBbMCwgMSwgY3NzVGV4dCwg
bGVuZ3RoLCBwYXJlbnRSdWxlLCBjc3NGbG9hdF0KKyAgICAgICAgLy8gICAtIDJuZCBncm91cGlu
ZywgY2FtZWwgY2FzZSwgYWxwaGFiZXRpY2FsLCBpbmNsdWRlcyBwcm9wZXJ0aWVzIHdpdGggIldl
YmtpdCIgYW5kICJFcHViIiAKKyAgICAgICAgLy8gICAgIHByZWZpeCB3aXRoIGluaXRpYWwgdXBw
ZXJjYXNlIGxldHRlciwgbm8gZGFzaGVzIGFueXdoZXJlIGluIHRoZSBuYW1lCisgICAgICAgIC8v
ICAgLSAzbmQgZ3JvdXBpbmcsIHdlYmtpdCBjYXNlLCBhbHBoYWJldGljYWwsIGFsbCBwcm9wZXJ0
aWVzIHByZWZpeGVkIHdpdGggIndlYmtpdCIgd2l0aAorICAgICAgICAvLyAgICAgaW5pdGlhbCBs
b3dlcmNhc2UgbGV0dGVyICd3Jy4KKyAgICAgICAgLy8gICAtIDR0aCBncm91cGluZywgZGFzaGVk
IGNhc2UsIGFscGhhYmV0aWNhbCwgYWxsIHByb3BlcnRpZXMgaGF2ZSBhIGRhc2ggaW4gdGhlbS4K
KyAgICAgICAgLy8gICAtIDV0aCBncm91cGluZywgZXB1YiBjYXNlLCBhbHBoYWJldGljYWwsIGFs
bCBwcm9wZXJ0aWVzIHByZWZpeGVkIHdpdGggImVwdWIiIHdpdGggCisgICAgICAgIC8vICAgICBp
bml0aWFsIGxvd2VyY2FzZSBsZXR0ZXIgJ2UnLgorICAgICAgICAvLyAgIC0gNnRoIGdyb3VwaW5n
LCBbaXRlbSwgZ2V0UHJvcGVydHlWYWx1ZSwgZ2V0UHJvcGVydHlQcmlvcml0eSwgc2V0UHJvcGVy
dHksIHJlbW92ZVByb3BlcnR5LCAKKyAgICAgICAgLy8gICAgIGdldFByb3BlcnR5U2hvcnRoYW5k
LCBpc1Byb3BlcnR5SW1wbGljaXQsIGdldFByb3BlcnR5Q1NTVmFsdWVdCisKKyAgICAgICAgbGV0
IHByb3BlcnRpZXMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQgcCBpbiBkb2N1bWVudC5ib2R5LnN0
eWxlKQorICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKHApOworCisgICAgICAgIGxldCBpbml0
aWFsSW5kZXhPZkdyb3VwMSA9IDA7CisgICAgICAgIGxldCBpbml0aWFsSW5kZXhPZkdyb3VwMiA9
IHByb3BlcnRpZXMuZmluZEluZGV4KHByb3BlcnR5ID0+IHByb3BlcnR5ID09ICJjc3NGbG9hdCIp
ICsgMTsKKyAgICAgICAgbGV0IGluaXRpYWxJbmRleE9mR3JvdXAzID0gcHJvcGVydGllcy5maW5k
SW5kZXgocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgid2Via2l0IikpOworICAgICAg
ICBsZXQgaW5pdGlhbEluZGV4T2ZHcm91cDQgPSBwcm9wZXJ0aWVzLmZpbmRJbmRleChwcm9wZXJ0
eSA9PiBwcm9wZXJ0eS5pbmNsdWRlcygiLSIpKTsKKyAgICAgICAgbGV0IGluaXRpYWxJbmRleE9m
R3JvdXA1ID0gcHJvcGVydGllcy5maW5kSW5kZXgocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRz
V2l0aCgiZXB1YiIpKTsKKyAgICAgICAgbGV0IGluaXRpYWxJbmRleE9mR3JvdXA2ID0gcHJvcGVy
dGllcy5maW5kSW5kZXgocHJvcGVydHkgPT4gcHJvcGVydHkgPT0gIml0ZW0iKTsKKworICAgICAg
ICBzaG91bGRCZVRydWUoImluaXRpYWxJbmRleE9mR3JvdXAyID4gaW5pdGlhbEluZGV4T2ZHcm91
cDEiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpbml0aWFsSW5kZXhPZkdyb3VwMyA+IGluaXRp
YWxJbmRleE9mR3JvdXAyIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5pdGlhbEluZGV4T2ZH
cm91cDQgPiBpbml0aWFsSW5kZXhPZkdyb3VwMyIpOworICAgICAgICBzaG91bGRCZVRydWUoImlu
aXRpYWxJbmRleE9mR3JvdXA1ID4gaW5pdGlhbEluZGV4T2ZHcm91cDQiKTsKKyAgICAgICAgc2hv
dWxkQmVUcnVlKCJpbml0aWFsSW5kZXhPZkdyb3VwNiA+IGluaXRpYWxJbmRleE9mR3JvdXA1Iik7
CisKKyAgICAgICAgbGV0IGdyb3VwMSA9IHByb3BlcnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZH
cm91cDEsIGluaXRpYWxJbmRleE9mR3JvdXAyKTsKKyAgICAgICAgbGV0IGdyb3VwMiA9IHByb3Bl
cnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91cDIsIGluaXRpYWxJbmRleE9mR3JvdXAzKTsK
KyAgICAgICAgbGV0IGdyb3VwMyA9IHByb3BlcnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91
cDMsIGluaXRpYWxJbmRleE9mR3JvdXA0KTsKKyAgICAgICAgbGV0IGdyb3VwNCA9IHByb3BlcnRp
ZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91cDQsIGluaXRpYWxJbmRleE9mR3JvdXA1KTsKKyAg
ICAgICAgbGV0IGdyb3VwNSA9IHByb3BlcnRpZXMuc2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91cDUs
IGluaXRpYWxJbmRleE9mR3JvdXA2KTsKKyAgICAgICAgbGV0IGdyb3VwNiA9IHByb3BlcnRpZXMu
c2xpY2UoaW5pdGlhbEluZGV4T2ZHcm91cDYpOworCisgICAgICAgIC8vIEdyb3VwIDEKKyAgICAg
ICAgc2hvdWxkQmUoYGdyb3VwMWAsIGBbIjAiLCAiMSIsICJjc3NUZXh0IiwgImxlbmd0aCIsICJw
YXJlbnRSdWxlIiwgImNzc0Zsb2F0Il1gKTsKKworICAgICAgICAvLyBHcm91cCAyIC0gQ2FtZWwg
Q2FzZQorICAgICAgICBsZXQgZ3JvdXAyQ2xvbmUgPSBbLi4uZ3JvdXAyXTsKKyAgICAgICAgZ3Jv
dXAyQ2xvbmUuc29ydCgpOworICAgICAgICBzaG91bGRCZSgiZ3JvdXAyIiwgImdyb3VwMkNsb25l
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXAyLnNvbWUocHJvcGVydHkgPT4gcHJvcGVy
dHkuc3RhcnRzV2l0aCgiV2Via2l0IikpYCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXAy
LnNvbWUocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgiRXB1YiIpKWApOworICAgICAg
ICBzaG91bGRCZVRydWUoYGdyb3VwMi5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuaW5jbHVk
ZXMoIi0iKSlgKTsKKworICAgICAgICAvLyBHcm91cCAzIC0gV2ViS2l0IENhc2UKKyAgICAgICAg
bGV0IGdyb3VwM0Nsb25lID0gWy4uLmdyb3VwM107CisgICAgICAgIGdyb3VwM0Nsb25lLnNvcnQo
KTsKKyAgICAgICAgc2hvdWxkQmUoImdyb3VwMyIsICJncm91cDNDbG9uZSIpOworICAgICAgICBz
aG91bGRCZVRydWUoYGdyb3VwMy5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0
aCgiV2Via2l0IikpYCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXAzLmV2ZXJ5KHByb3Bl
cnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikpYCk7CisgICAgICAgIHNob3VsZEJl
VHJ1ZShgZ3JvdXAzLmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5pbmNsdWRlcygiLSIpKWAp
OworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwMy5ldmVyeShwcm9wZXJ0eSA9PiBwcm9wZXJ0
eS5zdGFydHNXaXRoKCJ3ZWJraXQiKSlgKTsKKworICAgICAgICAvLyBHcm91cCA0IC0gRGFzaGVk
IENhc2UKKyAgICAgICAgbGV0IGdyb3VwNENsb25lID0gWy4uLmdyb3VwNF07CisgICAgICAgIGdy
b3VwNENsb25lLnNvcnQoKTsKKyAgICAgICAgc2hvdWxkQmUoImdyb3VwNCIsICJncm91cDRDbG9u
ZSIpOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwNC5ldmVyeShwcm9wZXJ0eSA9PiAhcHJv
cGVydHkuc3RhcnRzV2l0aCgiV2Via2l0IikpYCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZShgZ3Jv
dXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5zdGFydHNXaXRoKCJFcHViIikpYCk7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZShgZ3JvdXA0LmV2ZXJ5KHByb3BlcnR5ID0+ICFwcm9wZXJ0eS5z
dGFydHNXaXRoKCJ3ZWJraXQiKSlgKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDQuZXZl
cnkocHJvcGVydHkgPT4gcHJvcGVydHkuaW5jbHVkZXMoIi0iKSlgKTsKKworICAgICAgICAvLyBH
cm91cCA1IC0gRXB1YiBDYXNlCisgICAgICAgIGxldCBncm91cDVDbG9uZSA9IFsuLi5ncm91cDVd
OworICAgICAgICBncm91cDVDbG9uZS5zb3J0KCk7CisgICAgICAgIHNob3VsZEJlKCJncm91cDUi
LCAiZ3JvdXA1Q2xvbmUiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91cDUuZXZlcnkocHJv
cGVydHkgPT4gIXByb3BlcnR5LnN0YXJ0c1dpdGgoIldlYmtpdCIpKWApOworICAgICAgICBzaG91
bGRCZVRydWUoYGdyb3VwNS5ldmVyeShwcm9wZXJ0eSA9PiAhcHJvcGVydHkuc3RhcnRzV2l0aCgi
RXB1YiIpKWApOworICAgICAgICBzaG91bGRCZVRydWUoYGdyb3VwNS5ldmVyeShwcm9wZXJ0eSA9
PiAhcHJvcGVydHkuaW5jbHVkZXMoIi0iKSlgKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGBncm91
cDUuZXZlcnkocHJvcGVydHkgPT4gcHJvcGVydHkuc3RhcnRzV2l0aCgiZXB1YiIpKWApOwogCi0g
ICAgICAgIC8vIFRlc3QgQ1NTIHByb3BlcnR5IG9yZGVyLgotICAgICAgICB2YXIgc3RhcnRlZDsK
LSAgICAgICAgdmFyIGNzc1Byb3BlcnR5Q291bnQgPSAwOwotICAgICAgICB2YXIgcHJldmlvdXM7
Ci0gICAgICAgIHZhciBzZWVuRmlsdGVyOwotICAgICAgICBmb3IgKHZhciBwIGluIGRvY3VtZW50
LmJvZHkuc3R5bGUpIHsKLSAgICAgICAgICAgIGlmIChwID09PSAiYWxpZ25tZW50QmFzZWxpbmUi
KQotICAgICAgICAgICAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFzdGFy
dGVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHAgPT09ICJm
aWx0ZXIiKQotICAgICAgICAgICAgICAgIHNlZW5GaWx0ZXIgPSB0cnVlOwotICAgICAgICAgICAg
aWYgKHByZXZpb3VzICYmIHByZXZpb3VzID49IHApIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJJbnZhbGlkIENTUy1tYXBwZWQgcHJvcGVydHkgb3JkZXI6ICciICsgcCArICInIGFmdGVy
ICciICsgcHJldmlvdXMgKyAiJyIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCsrY3NzUHJvcGVydHlDb3VudCA8PSA0MDApCi0gICAgICAg
ICAgICAgICAgcHJldmlvdXMgPSBwOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHNlZW5GaWx0ZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlRoZSBD
U1MgcHJvcGVydHkgb3JkZXIgaXMgY29ycmVjdCIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGhlICdmaWx0ZXInIHByb3BlcnR5IHdhcyBu
b3QgZW51bWVyYXRlZCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CisgICAgICAgIC8vIEdyb3VwIDYKKyAgICAgICAgc2hvdWxkQmUoYGdyb3VwNmAs
IGBbIml0ZW0iLCAiZ2V0UHJvcGVydHlWYWx1ZSIsICJnZXRQcm9wZXJ0eVByaW9yaXR5IiwgInNl
dFByb3BlcnR5IiwgInJlbW92ZVByb3BlcnR5IiwgImdldFByb3BlcnR5U2hvcnRoYW5kIiwgImlz
UHJvcGVydHlJbXBsaWNpdCIsICJnZXRQcm9wZXJ0eUNTU1ZhbHVlIl1gKTsKICAgICA8L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVy
YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2Rv
bUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NTgwNykKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDE0ICs2NSw2IEBAIFBBU1MgcmVzdWx0QXJyYXlbMV0uaXRlbSBpcyBjc3NS
dWxlTGlzdC4KIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKIFBBU1MgcmVzdWx0QXJyYXlb
Ml0uaXRlbSBpcyBjc3NSdWxlTGlzdC5pdGVtKDIpCiAKLVtvYmplY3QgQ1NTU3R5bGVEZWNsYXJh
dGlvbl0KLVBBU1MgcmVzdWx0QXJyYXlbMF0uaSBpcyAnMCcKLVBBU1MgcmVzdWx0QXJyYXlbMF0u
aXRlbSBpcyBjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMCkKLVBBU1MgcmVzdWx0QXJyYXlbMV0u
aSBpcyAnMScKLVBBU1MgcmVzdWx0QXJyYXlbMV0uaXRlbSBpcyBjc3NTdHlsZURlY2xhcmF0aW9u
Lml0ZW0oMSkKLVBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKLVBBU1MgcmVzdWx0QXJyYXlb
Ml0uaXRlbSBpcyBjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMikKLQogW29iamVjdCBDU1NWYWx1
ZUxpc3RdCiBQQVNTIHJlc3VsdEFycmF5Lmxlbmd0aCBpcyAxMAogUEFTUyByZXN1bHRBcnJheVsw
XS5pIGlzICcwJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0
aW9uLmh0bWwJKHJldmlzaW9uIDI3NTgwNykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxp
c3RFbnVtZXJhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTcgKzE3Nyw2IEBAIHNo
b3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pdGVtIiwgImNzc1J1bGUKIHNob3VsZEJlKCJyZXN1bHRB
cnJheVsyXS5pIiwgIicyJyIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzJdLml0ZW0iLCAiY3Nz
UnVsZUxpc3QuaXRlbSgyKSIpOwogCi0vLyBDU1NTdHlsZURlY2xhcmF0aW9uCi0vL2RlYnVnKGVz
Y2FwZUhUTUwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3N0eWxlJykpKTsKLXZhciBj
c3NTdHlsZURlY2xhcmF0aW9uID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMl0uY3NzUnVsZXNbMF0u
c3R5bGU7Ci1yZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0KGNzc1N0eWxlRGVjbGFyYXRpb24pOwot
c2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAnIik7Ci1zaG91bGRCZSgicmVzdWx0QXJy
YXlbMF0uaXRlbSIsICJjc3NTdHlsZURlY2xhcmF0aW9uLml0ZW0oMCkiKTsKLXNob3VsZEJlKCJy
ZXN1bHRBcnJheVsxXS5pIiwgIicxJyIpOwotc2hvdWxkQmUoInJlc3VsdEFycmF5WzFdLml0ZW0i
LCAiY3NzU3R5bGVEZWNsYXJhdGlvbi5pdGVtKDEpIik7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXlb
Ml0uaSIsICInMiciKTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5pdGVtIiwgImNzc1N0eWxl
RGVjbGFyYXRpb24uaXRlbSgyKSIpOwotCiAvLyBDU1NWYWx1ZUxpc3QKIHZhciBjc3NWYWx1ZUxp
c3QgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnb2wnKVswXSkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnYm9yZGVyLXNwYWNpbmcnKTsKIHJlc3Vs
dEFycmF5ID0gaXRlcmF0ZUxpc3QoY3NzVmFsdWVMaXN0KTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVz
LWRlc2NyaXB0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRl
c2NyaXB0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU4MDcpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9DU1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGll
cy1kZXNjcmlwdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDggQEAg
VGhpcyB0ZXN0cyB0aGUgZGVzY3JpcHRvciBvZiBDU1NTdHlsZURlYwogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCiAKLVBBU1MgZGVzY3JpcHRvclsnd3JpdGFibGUnXSBpcyB0cnVlCitQQVNT
IGRlc2NyaXB0b3JbJ2dldCddIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIGRlc2Ny
aXB0b3JbJ3NldCddIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNTIGRlc2NyaXB0b3Jb
J2VudW1lcmFibGUnXSBpcyB0cnVlCiBQQVNTIGRlc2NyaXB0b3JbJ2NvbmZpZ3VyYWJsZSddIGlz
IHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0NTU1N0eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0
aWVzLWRlc2NyaXB0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9D
U1NTdHlsZURlY2xhcmF0aW9uL2Nzc3N0eWxlZGVjbGFyYXRpb24tcHJvcGVydGllcy1kZXNjcmlw
dG9yLmh0bWwJKHJldmlzaW9uIDI3NTgwNykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0NTU1N0
eWxlRGVjbGFyYXRpb24vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9wZXJ0aWVzLWRlc2NyaXB0b3Iu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDkgQEAKICAgICA8c2NyaXB0PgogICAgICAg
ICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgZGVzY3JpcHRvciBvZiBDU1NTdHlsZURlY2xh
cmF0aW9uIHByb3BlcnRpZXMuIik7CiAKLSAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRvY3VtZW50LmJvZHkuc3R5bGUsICdjb2xvcicpOwot
ICAgICAgICBzaG91bGRCZVRydWUoImRlc2NyaXB0b3JbJ3dyaXRhYmxlJ10iKTsKKyAgICAgICAg
dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGRvY3VtZW50
LmJvZHkuc3R5bGUuX19wcm90b19fLCAnY29sb3InKTsKKyAgICAgICAgc2hvdWxkQmVUeXBlKCJk
ZXNjcmlwdG9yWydnZXQnXSIsICJGdW5jdGlvbiIpOworICAgICAgICBzaG91bGRCZVR5cGUoImRl
c2NyaXB0b3JbJ3NldCddIiwgIkZ1bmN0aW9uIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZGVz
Y3JpcHRvclsnZW51bWVyYWJsZSddIik7CiAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZGVzY3JpcHRv
clsnY29uZmlndXJhYmxlJ10iKTsKICAgICA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1ODA3KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA0LTEw
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgY29tcGls
ZSB0aW1lIGFuZCBiaW5hcnkgc2l6ZSBjb3N0IG9mIGVuYWJsaW5nIHByb3BlciBDU1NTdHlsZURl
Y2xhcmF0aW9uIHByb3BlcnR5IGFjY2VzcyBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83NTEzNjg4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3Nzc3R5bGVkZWNsYXJhdGlvbi1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHRlc3QgcmVzdWx0IG5vdyB0aGF0
IGl0IGlzIHBhc3NpbmcuCisKIDIwMjEtMDQtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbIG1hY09TIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hbmFseXNlcm5vZGUtaW50ZXJmYWNlL3JlYWx0
aW1lYW5hbHlzZXItZmZ0LXNjYWxpbmcuaHRtbCBpcyBhIGZsYWtleSB0ZXh0IGZhaWx1cmUKSW5k
ZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29tcGF0L2Nz
cy1zdHlsZS1kZWNsYXJhdGlvbi1hbGlhcy1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb21w
YXQvY3NzLXN0eWxlLWRlY2xhcmF0aW9uLWFsaWFzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjc1ODA3KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jb21wYXQvY3NzLXN0eWxlLWRlY2xhcmF0aW9uLWFsaWFzLWVudW1lcmF0aW9uLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBBbGlhc2Vz
IGVudW1lcmF0ZWQgb24gQ1NTU3R5bGVEZWNsYXJhdGlvbiBhc3NlcnRfdHJ1ZTogQWxpYXMgd2Vi
a2l0VHJhbnNmb3JtIHNlZW4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKK1BBU1MgQWxpYXNlcyBl
bnVtZXJhdGVkIG9uIENTU1N0eWxlRGVjbGFyYXRpb24KIApJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20vY3Nzc3R5bGVkZWNsYXJhdGlv
bi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xhcmF0aW9u
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzU4MDcpCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS9jc3NzdHlsZWRlY2xh
cmF0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MyBAQAogCi1GQUlMIENTUyBUZXN0OiBDU1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnRpZXMgYXJl
IGRlZmluZWQgYXMgV2ViSURMIGF0dHJpYnV0ZXMsIG5vdCB1c2luZyBnZXRPd25Qcm9wZXJ0eU5h
bWVzKCkgYXNzZXJ0X2ZhbHNlOiBzaG91bGRuJ3QgaGF2ZSBhbiBvd24gcHJvcGVydHkgZm9yIFdl
YklETCBhdHRyaWJ1dGVzIGV4cGVjdGVkIGZhbHNlIGdvdCB0cnVlCitQQVNTIENTUyBUZXN0OiBD
U1NTdHlsZURlY2xhcmF0aW9uIHByb3BlcnRpZXMgYXJlIGRlZmluZWQgYXMgV2ViSURMIGF0dHJp
YnV0ZXMsIG5vdCB1c2luZyBnZXRPd25Qcm9wZXJ0eU5hbWVzKCkKIApJbmRleDogTGF5b3V0VGVz
dHMvanMvZG9tL3B1dC1vdmVycmlkZS1zaG91bGQtbm90LXVzZS1pYy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL2RvbS9wdXQtb3ZlcnJpZGUtc2hvdWxkLW5vdC11c2UtaWMuaHRt
bAkocmV2aXNpb24gMjc1ODA3KQorKysgTGF5b3V0VGVzdHMvanMvZG9tL3B1dC1vdmVycmlkZS1z
aG91bGQtbm90LXVzZS1pYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDEwICs4LDEwIEBACiA8
c2NyaXB0PgogICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIGZ1bmN0aW9uIHRyYW5zaXRp
b25lZCgpIHsKLSAgICAgICAgICAgIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcp
LnN0eWxlOworICAgICAgICAgICAgZGF0YXNldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3An
KS5kYXRhc2V0OwogICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDIwOyBpKyspCi0gICAg
ICAgICAgICAgICAgc3R5bGVbJ3AnK2ldID0gaTsKLSAgICAgICAgICAgIHJldHVybiBzdHlsZTsK
KyAgICAgICAgICAgICAgICBkYXRhc2V0WydwJytpXSA9IGk7CisgICAgICAgICAgICByZXR1cm4g
ZGF0YXNldDsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIHB1dHRlcihvKSB7CkluZGV4
OiBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJz
aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc1ODA3KQorKysgTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvdHJhbnNpdGlvbnMtcGFyc2luZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTYsOCArNiw2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIFZh
bGlkIHRyYW5zaXRpb24tcHJvcGVydHkgdmFsdWVzLgogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5z
aXRpb25Qcm9wZXJ0eSBpcyAnYWxsJwogUEFTUyBjb21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRp
b25Qcm9wZXJ0eSBpcyAnYWxsJwotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZigndHJh
bnNpdGlvblByb3BlcnR5JykgaXMgbm90IC0xCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRl
eE9mKCd3ZWJraXRUcmFuc2l0aW9uUHJvcGVydHknKSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0
aW9uUHJvcGVydHkgaXMgJ25vbmUnCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblByb3Bl
cnR5IGlzICdub25lJwogUEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkgaXMgJ25v
bmUnCkBAIC0xMDAsOCArOTgsNiBAQCBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNpdGlv
blByb3BlCiBWYWxpZCB0cmFuc2l0aW9uLWR1cmF0aW9uIHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRT
dHlsZS50cmFuc2l0aW9uRHVyYXRpb24gaXMgJzBzJwogUEFTUyBjb21wdXRlZFN0eWxlLndlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbiBpcyAnMHMnCi1QQVNTIE9iamVjdC5rZXlzKHN0eWxlKS5pbmRl
eE9mKCd0cmFuc2l0aW9uRHVyYXRpb24nKSBpcyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5
bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb25EdXJhdGlvbicpIGlzIC0xCiBQQVNTIHN0eWxl
LnRyYW5zaXRpb25EdXJhdGlvbiBpcyAnMHMnCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlv
bkR1cmF0aW9uIGlzICcwcycKIFBBU1Mgc3R5bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIGlz
ICcwcycKQEAgLTE1MCw4ICsxNDYsNiBAQCBQQVNTIGNvbXB1dGVkU3R5bGUud2Via2l0VHJhbnNp
dGlvbkR1cmF0CiBWYWxpZCB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiB2YWx1ZXMuCiBQQVNT
IGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdlYXNlJwogUEFTUyBj
b21wdXRlZFN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiBpcyAnZWFzZScKLVBB
U1MgT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbicp
IGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uJykgaXMgLTEKIFBBU1Mgc3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uIGlzICdsaW5lYXInCiBQQVNTIGNvbXB1dGVkU3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uIGlzICdsaW5lYXInCiBQQVNTIHN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5j
dGlvbiBpcyAnbGluZWFyJwpAQCAtMzAwLDggKzI5NCw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53
ZWJraXRUcmFuc2l0aW9uVGltaW4KIFZhbGlkIHRyYW5zaXRpb24tZGVsYXkgdmFsdWVzLgogUEFT
UyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25EZWxheSBpcyAnMHMnCiBQQVNTIGNvbXB1dGVkU3R5
bGUud2Via2l0VHJhbnNpdGlvbkRlbGF5IGlzICcwcycKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUp
LmluZGV4T2YoJ3RyYW5zaXRpb25EZWxheScpIGlzIG5vdCAtMQotUEFTUyBPYmplY3Qua2V5cyhz
dHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvbkRlbGF5JykgaXMgLTEKIFBBU1Mgc3R5bGUu
dHJhbnNpdGlvbkRlbGF5IGlzICcwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRGVs
YXkgaXMgJzBzJwogUEFTUyBzdHlsZS53ZWJraXRUcmFuc2l0aW9uRGVsYXkgaXMgJzBzJwpAQCAt
MzUwLDggKzM0Miw2IEBAIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRGVsYXkK
IFZhbGlkIHRyYW5zaXRpb24gc2hvcnRoYW5kIHZhbHVlcy4KIFBBU1MgY29tcHV0ZWRTdHlsZS50
cmFuc2l0aW9uIGlzICdhbGwgMHMgZWFzZSAwcycKIFBBU1MgY29tcHV0ZWRTdHlsZS53ZWJraXRU
cmFuc2l0aW9uIGlzICdhbGwgMHMgZWFzZSAwcycKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmlu
ZGV4T2YoJ3RyYW5zaXRpb24nKSBpcyBub3QgLTEKLVBBU1MgT2JqZWN0LmtleXMoc3R5bGUpLmlu
ZGV4T2YoJ3dlYmtpdFRyYW5zaXRpb24nKSBpcyAtMQogUEFTUyBzdHlsZS50cmFuc2l0aW9uIGlz
ICdub25lJwogUEFTUyBjb21wdXRlZFN0eWxlLnRyYW5zaXRpb24gaXMgJ25vbmUgMHMgZWFzZSAw
cycKIFBBU1Mgc3R5bGUud2Via2l0VHJhbnNpdGlvbiBpcyAnbm9uZScKSW5kZXg6IExheW91dFRl
c3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy90cmFuc2l0aW9ucy90cmFuc2l0aW9ucy1wYXJzaW5nLmh0bWwJKHJldmlzaW9u
IDI3NTgwNykKKysrIExheW91dFRlc3RzL3RyYW5zaXRpb25zL3RyYW5zaXRpb25zLXBhcnNpbmcu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsNiBAQCBzaG91bGRCZSgiY29tcHV0ZWRT
dHlsZS50cmFuc2l0aW9uUHJvcGVyCiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS53ZWJraXRUcmFu
c2l0aW9uUHJvcGVydHkiLCAiJ2FsbCciKTsKIAogc3R5bGUudHJhbnNpdGlvblByb3BlcnR5ID0g
Im5vbmUiOwotc2hvdWxkTm90QmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd0cmFuc2l0
aW9uUHJvcGVydHknKSIsICItMSIpOwotc2hvdWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRl
eE9mKCd3ZWJraXRUcmFuc2l0aW9uUHJvcGVydHknKSIsICItMSIpOwogc2hvdWxkQmUoInN0eWxl
LnRyYW5zaXRpb25Qcm9wZXJ0eSIsICInbm9uZSciKTsKIHNob3VsZEJlKCJjb21wdXRlZFN0eWxl
LnRyYW5zaXRpb25Qcm9wZXJ0eSIsICInbm9uZSciKTsKIHNob3VsZEJlKCJzdHlsZS53ZWJraXRU
cmFuc2l0aW9uUHJvcGVydHkiLCAiJ25vbmUnIik7CkBAIC0xNzYsOCArMTc0LDYgQEAgc2hvdWxk
QmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbkR1cmF0aQogc2hvdWxkQmUoImNvbXB1dGVkU3R5
bGUud2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uIiwgIicwcyciKTsKIAogc3R5bGUudHJhbnNpdGlv
bkR1cmF0aW9uID0gIjBzIjsKLXNob3VsZE5vdEJlKCJPYmplY3Qua2V5cyhzdHlsZSkuaW5kZXhP
ZigndHJhbnNpdGlvbkR1cmF0aW9uJykiLCAiLTEiKTsKLXNob3VsZEJlKCJPYmplY3Qua2V5cyhz
dHlsZSkuaW5kZXhPZignd2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uJykiLCAiLTEiKTsKIHNob3Vs
ZEJlKCJzdHlsZS50cmFuc2l0aW9uRHVyYXRpb24iLCAiJzBzJyIpOwogc2hvdWxkQmUoImNvbXB1
dGVkU3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uIiwgIicwcyciKTsKIHNob3VsZEJlKCJzdHlsZS53
ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24iLCAiJzBzJyIpOwpAQCAtMjU2LDggKzI1Miw2IEBAIHNo
b3VsZEJlKCJjb21wdXRlZFN0eWxlLnRyYW5zaXRpb25UaW1pbmcKIHNob3VsZEJlKCJjb21wdXRl
ZFN0eWxlLndlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiIsICInZWFzZSciKTsKIAogc3R5
bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uID0gImxpbmVhciI7Ci1zaG91bGROb3RCZSgiT2Jq
ZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbicpIiwgIi0x
Iik7Ci1zaG91bGRCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3dlYmtpdFRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbicpIiwgIi0xIik7CiBzaG91bGRCZSgic3R5bGUudHJhbnNpdGlvblRp
bWluZ0Z1bmN0aW9uIiwgIidsaW5lYXInIik7CiBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFu
c2l0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2xpbmVhciciKTsKIHNob3VsZEJlKCJzdHlsZS53ZWJr
aXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2xpbmVhciciKTsKQEAgLTQ4NSw4ICs0Nzks
NiBAQCBzaG91bGRCZSgiY29tcHV0ZWRTdHlsZS50cmFuc2l0aW9uRGVsYXkiCiBzaG91bGRCZSgi
Y29tcHV0ZWRTdHlsZS53ZWJraXRUcmFuc2l0aW9uRGVsYXkiLCAiJzBzJyIpOwogCiBzdHlsZS50
cmFuc2l0aW9uRGVsYXkgPSAiMHMiOwotc2hvdWxkTm90QmUoIk9iamVjdC5rZXlzKHN0eWxlKS5p
bmRleE9mKCd0cmFuc2l0aW9uRGVsYXknKSIsICItMSIpOwotc2hvdWxkQmUoIk9iamVjdC5rZXlz
KHN0eWxlKS5pbmRleE9mKCd3ZWJraXRUcmFuc2l0aW9uRGVsYXknKSIsICItMSIpOwogc2hvdWxk
QmUoInN0eWxlLnRyYW5zaXRpb25EZWxheSIsICInMHMnIik7CiBzaG91bGRCZSgiY29tcHV0ZWRT
dHlsZS50cmFuc2l0aW9uRGVsYXkiLCAiJzBzJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRy
YW5zaXRpb25EZWxheSIsICInMHMnIik7CkBAIC01NjUsOCArNTU3LDYgQEAgc2hvdWxkQmUoImNv
bXB1dGVkU3R5bGUudHJhbnNpdGlvbiIsICInYQogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUud2Vi
a2l0VHJhbnNpdGlvbiIsICInYWxsIDBzIGVhc2UgMHMnIik7CiAKIHN0eWxlLnRyYW5zaXRpb24g
PSAibm9uZSI7Ci1zaG91bGROb3RCZSgiT2JqZWN0LmtleXMoc3R5bGUpLmluZGV4T2YoJ3RyYW5z
aXRpb24nKSIsICItMSIpOwotc2hvdWxkQmUoIk9iamVjdC5rZXlzKHN0eWxlKS5pbmRleE9mKCd3
ZWJraXRUcmFuc2l0aW9uJykiLCAiLTEiKTsKIHNob3VsZEJlKCJzdHlsZS50cmFuc2l0aW9uIiwg
Iidub25lJyIpOwogc2hvdWxkQmUoImNvbXB1dGVkU3R5bGUudHJhbnNpdGlvbiIsICInbm9uZSAw
cyBlYXNlIDBzJyIpOwogc2hvdWxkQmUoInN0eWxlLndlYmtpdFRyYW5zaXRpb24iLCAiJ25vbmUn
Iik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>